【问题标题】:OFFSET | FETCH Order By column - SQL Server偏移量 | FETCH 按列排序 - SQL Server
【发布时间】:2019-02-14 14:01:10
【问题描述】:

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

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 会运行得更好,即使它是按列排序的。

我单独运行查询。我在每个查询之间擦除缓存计划和缓冲区,以便它不使用以前的执行计划。

谢谢

【问题讨论】:

  • ItemID 是否被索引?
  • 你到底是如何测试的?
  • 冷/热数据? (每个查询运行两次。)

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    第一次查询应该更快。

    您是否尝试先执行第二个查询并查看性能差异。可能是索引和其他性能属性让您感觉第二个查询执行得更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 2023-03-28
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多