我可以通过在EF Core和SQL Server中的OrderBy()之前使用Where()来提高查询的性能吗



我在MS SQL Server中使用实体框架核心,我对我的dbContext有以下查询:

var list = await dbContext.MyTable
.OrderByDescending(x => x.Timestamp)
.Where(x => x.Something == someVar && x.Succeeded)
.ToListAsync()
.ConfigureAwait(false);

如果我将OrderByDescending()Where()之前移动到之后,性能会有什么不同吗?

像这样:

var list = await dbContext.MyTable
.Where(x => x.Something == someVar && x.Succeeded)
.OrderByDescending(x => x.Timestamp)
.ToListAsync()
.ConfigureAwait(false);

根据建议,我已经做了一些基准测试。我每次运行都使用一个新的InMemoryDatabase,并用100万个条目填充它,每个条目都有不同的时间戳。我运行了5次这两个查询,以获得更好的基线进行比较。

OrderBy()置于Where():之前时的结果

1651ms
1096ms
1172ms
1214ms
1391ms

OrderBy()置于Where():之后的结果

735ms
1026ms
894ms
1110ms
939ms

看起来语句的顺序确实有影响,尽管它很小。

最新更新