我有一个带有多个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视图。
答案 0 :(得分:0)
我们最终创建了一个SQL视图并将实体链接到该视图。不是最好的解决方案,但它是我们时间表的最佳选择。