我有一些慢的linq查询,需要优化它们。我已阅读有关已编译查询以及在我的只读操作中在NoTracking中设置合并选项的信息。 但我认为我的问题是我有太多的包含因此在数据库中完成的连接数量很大。
context.ExampleEntity
.Include("A")
.Include("B")
.Include("D.E.F")
.Include("G.H")
.Include("I.J")
.Include("K.M")
.Include("K.N")
.Include("O.P")
.Include("Q.R")
.Where(a => condition1 || complexCondition2)
我的疑问是,如果我把那些包含在之前的地方,那么在进行所有连接之前,这会过滤ExampleEntity对象吗?我不确定linq查询如何转换为SQL
答案 0 :(得分:0)
“是”。
每个子查询都将结果传递给下一个。首先移动Where
将过滤,然后对可能更小的集合执行包含。
在您的特定查询的上下文中是否有意义由您决定。