我应该在性能方面担心实体框架linq查询子句的顺序吗?
在下面的示例中,可以更改两个where子句对数据库查找的性能影响的顺序吗?
using (var context = new ModelContext())
{
var fetchedImages = (from images in context.Images.Include("ImageSource")
where images.Type.Equals("jpg")
where images.ImageSource.Id == 5
select images).ToArray();
}
答案 0 :(得分:4)
不,更改这两个where
条款不会影响性能。
无论如何,生成的SQL将如下所示:
WHERE [condition1] AND [condition2]
此外,您可以编写条件,并结合逻辑运算符:
where images.Type.Equals("jpg") && images.ImageSource.Id == 5
答案 1 :(得分:-1)
一般情况是where
操作员会“短路”,所以如果第一个是假的,那么第二个甚至不会被检查,所以如果一个人会更频繁地失败,通常你想检查它首先。
但是,如果更频繁的故障处理缓慢,则会发生故障。
唯一可以确定的方法是使用适当的工具分析您的代码。