EF linq查询子句的顺序是否会影响性能?

时间:2013-03-21 08:13:02

标签: c# performance linq entity-framework linq-to-entities

我应该在性能方面担心实体框架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();
        }

2 个答案:

答案 0 :(得分:4)

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

WHERE [condition1] AND [condition2]

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

where images.Type.Equals("jpg") && images.ImageSource.Id == 5

答案 1 :(得分:-1)

一般情况是where操作员会“短路”,所以如果第一个是假的,那么第二个甚至不会被检查,所以如果一个人会更频繁地失败,通常你想检查它首先。

但是,如果更频繁的故障处理缓慢,则会发生故障。

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