我有这个问题,我需要在加入其他较小的表的大表(1m记录)上执行Linq查询。运行查询的时间太长,有时会以Execution Timeout Expired
结尾。我不确定如何改进查询以缩短执行时间。
var result = from p in db.population
join e in db.engineers on p.id equals e.personId into ps
from e in ps.DefaultIfEmpty()
where (e == null || e.activity == "student")
select p.name;
var final result = result.Take(100).ToList();
基本上我想让db.population
的前100名不是工程师,工程师学生被排除在外。
我不确定是否可以用更好的方式编写查询以提高性能?
答案 0 :(得分:0)
试试这个 在加入之前做它
var result = from p in db.population
join e in db.engineers.WHERE( c=> c.activity == "student")
on p.id equals e.personId into ps
from e in ps.DefaultIfEmpty()
where (e == null)
select p.name;
var final result = result.Take(100).ToList();
或
join e in db.engineers.WHERE( c=> c.activity == "student").Take(100)