我们在linq查询中遇到问题。在选择查询中,多个表与联接相关联。记录过滤器应用于连接部分的位置。
此查询运行良好,并且在过去8到9个月内的时间内给出了正确的结果。 突然,花了大约2分钟的时间才能检索到具有相同联接并消耗99%CPU的记录。
此查询始终在用户登录时使用,因此可以确保它在过去直到问题发布之前一直运行良好。 任何人都可以帮助为什么这个问题突然发生吗?
var entityList = (from x in db.TableA
join y in db.TableB on x.Id equals y.TableC.TableAId into g
from d in g.DefaultIfEmpty()
where d.EndDateTime == null &&
(d == null || d.TableE.PersonID == personId) &&
x.EndDateTime == null &&
d.TableC.EndDateTime == null &&
x.TableE.PersonID == personId
select new
{
Col1 = d != null ? d.TableC.TableD.Id : 0,
Col2 = d != null ? d.TableC.Id : 0,
}).AsQueryable();
答案 0 :(得分:0)
如果该框架将d == null
变成d = null
而不是d IS NULL
,那就是一个严重的缺陷。
OR
可能会影响性能。您是否真的需要NULL
的{{1}}选项?有什么索引?