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. */

SQL Server 2012 OFFSET/FETCH NEXT分页示例(转载)的更多相关文章

  1. SQL Server 2012 OFFSET/FETCH NEXT分页示例

    原文:http://beyondrelational.com/modules/29/presentations/483/scripts/12983/sql-server-2012-server-sid ...

  2. SQL Server 2012 列存储索引分析(转载)

    一.概述 列存储索引是SQL Server 2012中为提高数据查询的性能而引入的一个新特性,顾名思义,数据以列的方式存储在页中,不同于聚集索引.非聚集索引及堆表等以行为单位的方式存储.因为它并不要求 ...

  3. SQL Server使用Offset/Fetch Next实现分页

    T-SQL实现分页 ,查找指定范围内的数据 首先,正常的查询是这样的 使用分页后 select * from Products order by ProductID offset X rows fet ...

  4. SQL Server 2012使用Offset/Fetch Next实现分页

    在Sql Server 2012之前,实现分页主要是使用ROW_NUMBER(),在SQL Server2012,可以使用Offset ...Rows  Fetch Next ... Rows onl ...

  5. Sql Server 2012 的新分页方法分析(offset and fetch) - 转载

    最近在分析 Sql Server 2012 中 offset and fetch 的新特性,发现 offset and fetch 无论语法的简洁还是功能的强大,都是相当相当不错的 其中 offset ...

  6. SQL Server 2012使用OFFSET/FETCH NEXT分页及性能测试

    最近在网上看到不少文章介绍使用SQL Server 2012的新特性:OFFSET/FETCH NEXT 实现分页.多数文章都是引用或者翻译的这一篇<SQL Server 2012 - Serv ...

  7. Sql Server 2012 分页方法分析(offset and fetch)

    最近在分析 Sql Server 2012 中 offset and fetch 的新特性,发现 offset and fetch 无论语法的简洁还是功能的强大,都是相当相当不错的.其中  offse ...

  8. SQLServer · 最佳实践 · SQL Server 2012 使用OFFSET分页遇到的问题

    1. 背景 最近有一个客户遇到一个奇怪的问题,以前使用ROW_NUMBER来分页结果是正确的,但是替换为SQL SERVER 2012的OFFSET...FETCH NEXT来分页出现了问题,因此,这 ...

  9. SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试(转)

    原文地址:http://www.cnblogs.com/downmoon/archive/2012/04/19/2456451.html 在<SQL Server 2012服务端使用OFFSET ...

随机推荐

  1. IE兼容模式下两个小问题,JSON.stringify和SCRIPT70 无权限

    JSON.stringify在IE兼容模式下不起作用,原来是序列化对象是一个easyuiTree的树节点对象,过于复杂的对象 SCRIPT70 权限,问题出现在获取页面iframe时: var ifr ...

  2. linux (centos) 单机50w+链接 内核参数配置

    1 突破系统最大fd   查看当前文件描述符的限制数目的命令: ulimit -n .修改文件描述符的限制数目 2.1 临时改变当前会话: ulimit -n 2.2 永久变更需要下面两个步骤: ./ ...

  3. ASP.NET MVC 站点设置.html 为起始页

    1.  删除 controller="XX" 2. 确保你的工程根目录下的*.htm或*.html文件名在IIS默认文档中存在 搞定

  4. Spark Graphx In Action

    两个重要的技术:Spark和graphs 本章节内容 为什么Spark是最先进的大数据处理系统 是什么让图可以以一种独特的方式来模拟关联数据 GraphX为什么会成规领先的图分析平台

  5. motto6

    当你发现自己不错的时候,要适当的给自己加点凉水,让自己知道自己离“不错”还很远.

  6. 幼谈苹果新开发语言:Swift和苹果的用心

    今天是个值得纪念的日子:因为苹果的WWDC大会.苹果的每次WWDC(全球开发者大会)举行都让我们像打了肾上腺素这么兴奋.幸福.惊叹.震撼.深思. 今年也不例外,最关键的是苹果带来了它的一门新开发语言: ...

  7. Tenth scrum meeting - 2015/11/4

    我们的项目开发已经渐渐进入了后期,每个模块都只剩下了一小块任务待做,同学们在做自己的模块的同时也开始对各个同学的模块进行合并. 其中最麻烦的就是视频播放模块与其他模块的合并了,由于该模块的实现需要添加 ...

  8. Java Session 介绍;

    为什么需要Session 这是为了填补 Http 协议的局限,当用户去访问一个页面,服务端返回完了请求(如,你访问完一个网页,这个页面将页面内容,界面UI呈现给你),就算是结束了,就断开了,服务端不再 ...

  9. Windows Server 2012 GUI与Core的切换

    Server Core是在Windows Server 2008 系统上开始引入的极小的服务器安装选项,server core 的作用就是为特定的服务提供一个可执行的功能有限的低维护服务器环境,为我们 ...

  10. 减小Delphi2010程序的尺寸(关闭RTTI反射机制)

    自从Delphi2010增强了RTTI反射机制后,编译出来的程序变得更大了,这是因为默认情况下 Delphi2010 给所有类都加上了RTTI信息(呵呵,不管你用不用它,好像实用价值确实不高,至少目前 ...