SQL Server 2012 OFFSET/FETCH NEXT分页示例

news/2024/7/9 6:45:51

原文:http://beyondrelational.com/modules/29/presentations/483/scripts/12983/sql-server-2012-server-side-paging-demo-using-offsetfetch-next.aspx?utm_source=brnewsletter&utm_medium=email&utm_campaign=2012Apr

 

SQL Server 2005 引入了 ROW_NUMBER()来提供一种容易的分页方式。 SQL Server 2012 添加了另外一种更简单高效的分页方式。

  1. /*
  2. 执行脚本去创建这个表并插入数据。
  3. */
  4. IF OBJECT_ID('Customers','U') IS NOT NULL
  5. DROP TABLE Customers
  6. CREATE TABLE Customers (
  7. CustomerID INT,
  8. CustomerNumber CHAR(4),
  9. CustomerName VARCHAR(50),
  10. CustomerCity VARCHAR(20) )
  11. GO
  12. INSERT INTO Customers (
  13. CustomerID, CustomerNumber, CustomerName, CustomerCity
  14. )
  15. SELECT
  16. Number,
  17. REPLACE(STR(Number, 4), ' ', '0'),
  18. 'Customer ' + STR(number,6),
  19. CHAR(65 + (number % 26)) + '-City'
  20. FROM master..spt_values WHERE type = 'p'
  21. AND number BETWEEN 0 AND 999
  22. /*
  23. 用ROW_NUMBER()的分页示例- SQL Server 2005/2008 版本。
  24. */
  25. DECLARE @page INT, @size INT
  26. SELECT @page = 3, @size = 10
  27. ;WITH cte AS (
  28. SELECT TOP (@page * @size)
  29. CustomerID,
  30. CustomerName,
  31. CustomerCity,
  32. ROW_NUMBER() OVER(ORDER BY CustomerName ) AS Seq,
  33. COUNT(*) OVER(PARTITION BY '') AS Total
  34. FROM Customers
  35. WHERE CustomerCity IN ('A-City','B-City')
  36. ORDER BY CustomerName ASC
  37. )
  38. SELECT
  39. *
  40. FROM cte
  41. WHERE seq BETWEEN (@page - 1 ) * @size + 1 AND @page * @size
  42. ORDER BY seq
  43. /*
  44. SQL Server 2012中新添加的分页示例
  45. */
  46. DECLARE @page INT, @size INT
  47. SELECT @page = 3, @size = 10
  48. SELECT
  49. *,
  50. COUNT(*) OVER(PARTITION BY '') AS Total
  51. FROM Customers
  52. WHERE CustomerCity IN ('A-City','B-City')
  53. ORDER BY CustomerID
  54. OFFSET (@page -1) * @size ROWS
  55. FETCH NEXT @size ROWS ONLY;
  56. /*
  57. 同时执行这两个版本,打开执行计划,你可以注意到在这个例子中显著的性能差异。
  58. */

http://lihuaxi.xjx100.cn/news/236574.html

相关文章

python lstm_python-Keras中LSTM的补充

好的,所以您的问题让我开始思考,我想我已经解决了,但是什么都没有.这是我为获取LSTM实现背后的一些见识而编写的代码段.from keras.layers import LSTMfrom keras.models import Sequentialmodel Sequential()model.add(LSTM(10, input_shape(20, 30), return_sequencesTrue))…

【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战

一、写在前面 相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这是非常火的一门技术。 如果只是用户量很少的传统IT系统,使用Spring Cloud可能还暴露不出什么问题。 如果是较多用户量,高峰每秒高达上万并发请求的互联…

紫书 习题 10-17 UVa 11105 (筛法)

类似于素数筛的思想去做&#xff0c;不然暴力会超时而且还要判重 #include<cstdio> #include<cstring> #include<vector> #define REP(i, a, b) for(int i (a); i < (b); i) using namespace std;const int MAXN 1123456; int vis[MAXN]; vector<int…

机器学习模型 知乎_机器学习:模型评估之评估方法

​机器学习已经成为了人工智能的核心研究领域之一&#xff0c;它的研究动机就是为了让计算机系统具有人的学习能力以便实现人工智能。目前&#xff0c;关于机器学习定义的说法比较多&#xff0c;而被广泛采用的定义是“利用经验来改善计算机系统自身的性能”​。由于“经验”的…

Oracle Cloud Native Framework推出云原生解决方案

摘要&#xff1a;Oracle Cloud Native Framework云原生平台提供托管云服务和本地软件&#xff0c;同时在现Oracle云基础架构上跨应用程序配置和分析大量服务。developer relations for Oracle Cloud Infrastructure副总裁Bob Quillin讨论了该框架的优势以及对2019年云原生市场的…

地址池命令 思科理由_思科互联网络操作系统 ——路由器接口

点击蓝字关注我们路由器接口接口配置是最重要的路由器配置之一&#xff0c;因为若没有接口,路由器几乎就毫无用处。另外&#xff0c;要与其他设备通信&#xff0c;接口配置必须绝对精确。配置接口时&#xff0c;我们需要指定网络层地址、介质类型和带宽,还需使用其他管理命令。…

进程详细剖析(二)

摘自《C多核高级编程》 5.6.3 进程状态 在进程执行期间&#xff0c;它的状态会发生改变。进程的状态时指进程的当前状况。在POSIX兼容的环境中&#xff0c;进程可以处于以下状态&#xff1a; 1&#xff09;运行&#xff08;running&#xff09; 2&#xff09;就绪(runnable, r…

nginx rewrite 指令last break区别最详细的解释

总结&#xff1a; rewrite 可以在 server location 块&#xff0c; 正则比配的时候才重写&#xff0c;所以多条 rewrite 顺序靠前且匹配的优先执行。break跳出rewrite阶段&#xff0c;不会在匹配&#xff0c;进入输出阶段。 last 类似重新发起请求&#xff0c;所以会重新进行匹…