两个相等的检查在一个地方或反之亦然,以提高效率

时间:2017-01-19 14:24:01

标签: c# .net linq linq-to-sql

在linq-to-sql中哪个例子(如果有的话)我们期望更高效/更快地评估?他们编译成相同的SQL吗?在选择这些例子时,我还应该考虑其他因素吗?

DbContext context

context.Events
   .Where(evt => evt.Date <= endDate && evt.Date > startDate);

...或

context.Events
   .Where(evt => evt.Date <= endDate)
   .Where(evt => evt.Date > startDate);

1 个答案:

答案 0 :(得分:1)

正如juharr所述,两者都生成完全相同的SQL查询。

出于好奇,我在自己的数据库上进行了时间测试,发现了&amp;&amp;生成查询的速度要快得多。

            for (int i = 0; i < 500; i++)
            {
                var wko = db.WorkOrders
                    .Where(evt => DateTime.Now > evt.LastModified)
                    .Where(evt => DateTime.Now > evt.Opened);
            }
            for (int i = 0; i < 500; i++)
            {
                var wko2 = db.WorkOrders
                    .Where(evt => DateTime.Now > evt.LastModified && DateTime.Now > evt.Opened);
            }

第一个循环在&lt; = 24ms内完成 第二个循环在&lt; = 16ms

中完成

我确信这通常会对你的表现产生很小的影响,但仅限于我们。