具有多个Join的LINQ语句非常慢

时间:2017-10-30 17:18:17

标签: oracle entity-framework linq

我有一个带有多个JOINS的Oracle DB的LINQ语句需要很长时间才能处理(> 30秒)。当我查看输出的SQL时,它看起来很奇怪并包含许多子查询。我想我需要以某种方式优化这个陈述,但我不太确定。

  var WRs = (from c in db.WR_CONTACT
      join wr in db.WORK_REQUEST on c.WR_NO equals wr.WR_NO
      join z in db.TASKS on wr.WR_NO equals z.WR_NO
      join p in db.PEOPLE on z.RESPONSIBLE_PERSON_NO equals p.PERSON_NO
         where p.USERID == key && (z.WR_TASK_NO == 1 || z.WR_TASK_NO == 2) 
            && wr.WR_CANCEL_DATE == null 
            && wr.ACCOUNTING_CLOSE_DATE == null
      select c);

我也尝试过OUTER JOIN方法,并没有显着改善性能。我唯一能想到的就是打破它并创建一个新的SQL视图。

1 个答案:

答案 0 :(得分:0)

我们最终创建了一个SQL视图并将实体链接到该视图。不是最好的解决方案,但它是我们时间表的最佳选择。