抵消FETCH排序依据列-SQL Server

时间:2019-02-14 14:01:11

标签: sql sql-server sql-order-by fetch offset

谁能在一个非常基本的水平上向我解释这两个查询的性能差异。

ORDER BY (select null)
OFFSET @Offset ROWS
FETCH NEXT @EntriesPerPage ROWS ONLY;

ORDER BY (ItemID)
OFFSET @Offset ROWS
FETCH NEXT @EntriesPerPage ROWS ONLY;

我希望第一个查询的性能更好,因为它不是按列排序的,但是每次我测试时,第二个查询的性能总是更好。谁能向我解释为什么第二个查询即使按列排序也能更好地运行OFFSET / FETCH。

我分别运行查询。我擦除了每个查询之间的缓存计划和缓冲区,以使其不使用先前的执行计划。

谢谢

2 个答案:

答案 0 :(得分:0)

是的,第一个查询应该运行得更快,因为第二个查询需要执行其他排序操作。

您能否共享一些有关测试的表结构是什么,没有记录以及每个查询占用时间的更多详细信息?

答案 1 :(得分:0)

第一个查询应该更快。

您是否先尝试执行第二个查询,然后查看性能差异。可能被索引了,其他性能属性使您感觉第二次查询执行得更快。

如果您还共享表中的记录数,那就更好了。