zoukankan      html  css  js  c++  java
  • SQL Server 2012 OFFSET/FETCH NEXT分页示例(转载)

    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.    
    7. CREATE TABLE Customers (  
    8.     CustomerID INT,  
    9.     CustomerNumber CHAR(4),  
    10.     CustomerName VARCHAR(50),  
    11.     CustomerCity VARCHAR(20) )  
    12. GO  
    13.    
    14. INSERT INTO Customers (  
    15.     CustomerID, CustomerNumber, CustomerName, CustomerCity  
    16. )  
    17. SELECT  
    18.     Number,  
    19.     REPLACE(STR(Number, 4), ' ''0'),  
    20.     'Customer ' + STR(number,6),  
    21.     CHAR(65 + (number % 26)) + '-City'  
    22. FROM master..spt_values WHERE type = 'p'  
    23.     AND number BETWEEN 0 AND 999  
    24.    
    25. /*  
    26. 用ROW_NUMBER()的分页示例- SQL Server 2005/2008 版本。  
    27. */  
    28.    
    29. DECLARE @page INT, @size INT  
    30. SELECT @page = 3, @size = 10  
    31.    
    32. ;WITH cte AS (  
    33.     SELECT  TOP (@page * @size)  
    34.         CustomerID,  
    35.         CustomerName,  
    36.         CustomerCity,  
    37.         ROW_NUMBER() OVER(ORDER BY CustomerName ) AS Seq,  
    38.         COUNT(*) OVER(PARTITION BY ''AS Total  
    39.     FROM Customers  
    40.     WHERE CustomerCity IN ('A-City','B-City')  
    41.     ORDER BY CustomerName ASC  
    42. )  
    43. SELECT  
    44.     *  
    45. FROM cte  
    46. WHERE seq BETWEEN (@page - 1 ) * @size + 1 AND @page * @size  
    47. ORDER BY seq  
    48.    
    49. /*  
    50. SQL Server 2012中新添加的分页示例  
    51. */  
    52.    
    53. DECLARE @page INT, @size INT  
    54. SELECT @page = 3, @size = 10  
    55.    
    56. SELECT  
    57.     *,  
    58.     COUNT(*) OVER(PARTITION BY ''AS Total  
    59. FROM Customers  
    60. WHERE CustomerCity IN ('A-City','B-City')  
    61. ORDER BY CustomerID  
    62. OFFSET (@page -1) * @size ROWS  
    63. FETCH NEXT @size ROWS ONLY;  
    64.    
    65. /*  
    66. 同时执行这两个版本,打开执行计划,你可以注意到在这个例子中显著的性能差异。  
    67. */  
  • 相关阅读:
    [Ceoi2011]Traffic
    [中山市选2011]杀人游戏
    牛客 表达式得到期望结果的组成种数
    牛客 数字字符串转换为字母组合的种数
    牛客 龙与地下城游戏
    UVA 1103 Ancient Messages
    牛客 字符串的交错组成
    牛客 最小编辑代价
    牛客 子数组异或和为0的最多划分
    牛客 最长公共子串问题
  • 原文地址:https://www.cnblogs.com/yxlblogs/p/3540736.html
Copyright © 2011-2022 走看看