5

我应该担心实体框架 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();
        }
4

2 回答 2

4

不,更改这两个where子句不会影响性能。无论如何,生成的 SQL 将如下所示:

WHERE [condition1] AND [condition2]

此外,您可以编写条件,结合逻辑运算符:

where images.Type.Equals("jpg") && images.ImageSource.Id == 5
于 2013-03-21T08:18:45.997 回答
-1

一般情况是where操作者会“短路”,所以如果第一个是假的,第二个甚至都不会被检查,所以如果一个失败的频率更高,一般你要先检查它。

但是,如果更频繁的故障处理速度较慢,则这种情况会发生故障。

唯一确定的方法是使用适当的工具分析您的代码。

于 2013-03-21T09:08:47.573 回答