提高EF Linq查询性能

时间:2017-11-21 14:23:38

标签: asp.net-mvc performance entity-framework linq

我有这个问题,我需要在加入其他较小的表的大表(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名不是工程师,工程师学生被排除在外。

我不确定是否可以用更好的方式编写查询以提高性能?

1 个答案:

答案 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)