在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);
答案 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
中完成我确信这通常会对你的表现产生很小的影响,但仅限于我们。