我在 SQL Azure 中有一个People
大约 1000 行的表和一个大约 100 行的表。Dramas
两者通过外键链接Drama.PersonId
,每个人可以拥有0个或多个戏剧。
下面的代码按预期运行,返回大约 50 个人及其相关的近期戏剧。但是,运行时间超过 5 秒(用 测量Stopwatch
)。一定有什么低效的事情发生了?
var people = ctx.People
.Where(p => p.Dramas.Any(d => d.DateHappened >= startDate))
.Select(p => new
{
p.FirstName,
p.LastName,
Dramas = p.Dramas.Where(d => d.DateHappened >= startDate).Select(d => new { d.Id, d.DramaType })
}).AsEnumerable();