gpt4 book ai didi

sql-server - SQL Server 中旧的 row_number() 和新的基于 OFFSET + FETCH 的分页之间有什么区别?

转载 作者:行者123 更新时间:2023-12-02 02:59:21 27 4
gpt4 key购买 nike

对于 SQL Server 2012 提供的较旧的 row_number (SQL Server 2008) 和较新的 OFFSET + FETCH (SQL Server 2012) 分页机制,我有几个问题。

  1. row_number() 有哪些限制?
  2. OFFSET + FETCH 是 row_number() 的改进替代品吗?
  3. 是否存在只能使用其中一种而无法满足另一种的用例?
  4. 两者之间有性能差异吗?如果是,推荐哪一种?

谢谢。

最佳答案

使用ROW_NUMBER()效果很好——只是多了一些不必要的工作;您需要围绕实际查询编写一个“骨架”CTE,将 ROW_NUMBER() 列添加到输出集,然后对其进行过滤。

使用新的 OFFSET/FETCH 更简单 - 是的,它的性能也更好,正如这两个链接可以向您展示的那样:

总的来说:如果您使用 SQL Server 2012 - 那么您绝对应该使用OFFSET/FETCH而不是ROW_NUMBER () 用于分页

关于sql-server - SQL Server 中旧的 row_number() 和新的基于 OFFSET + FETCH 的分页之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16381803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com