SQL SERVER 2012/ 2014 分页,用 OFFSET,FETCH NEXT改写ROW_NUMBER的用法
2016-08-10 13:56
609 查看
写法:
假装有个表Shop,其中有一列ShopName,取100000到100050条数据。ROW_NUMBER 的写法
SELECT * FROM ( SELECT ShopName , ROW_NUMBER() OVER(ORDER BY ShopName) as R FROM Shop ) t WHERE R>100000 AND R<=100050
OFFSET,FETCH 的写法
SELECT ShopName from Shop ORDER BY ShopName OFFSET 100000 ROW FETCH NEXT 50 ROW ONLY
比较:
之所以取十万条以后的数据,能明显看出执行时间上的差异。虽然前人们已经给出过很多论证,我这里还是贴一下比较结果。先是ROW_NUMBER
![](http://doc.ithao123.cn/uploads02/u02/df/ca/dfca2cfffae572cd6e6bf4e231e16bae.png)
再是 OFFSET FETCH
![](http://doc.ithao123.cn/uploads02/u02/cc/c4/ccc44574ff4b10dd9e35819a4d43994f.png)
高下立判,后者既高效又好写易懂有木有!
私人小笔记:
OFFSET=偏移,跳过FETCH = 取
另外OFFSET可以单独使用,如下,既跳过前十万条:
SELECT ShopName from Shop ORDER BY ShopName OFFSET 100000 ROW
题外话:
从 SQL SERVER 2000 那个大家还在写TOP的年代,到2005的ROW_NUMBER,再到2012的OFFSET FETCH,猿类同胞们真是不跟紧潮流就要被无情的抛下啊~一起加了个油吧~
相关文章推荐
- SqlServer 2012/2014新增Offset,Fetch Next分页方式
- SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试(转)
- SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试
- SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试 [T]
- SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试
- SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试
- Sql Server 2005 ROW_NUMBER 函数实现分页
- Sql Server 2005 row_number()分页性能测试比较
- sql Server 05中利用ROW_NUMBER() 函数分页
- Sql Server 2005 中的row_number()分页技术
- SQL Server 2005 技术内幕 TSQL查询学习笔记chapter4之三排名函数Row_number()和分页应用
- SQL Server 2005 的分页查询(ROW_NUMBER() OVER 语句)
- sql server 2005的分页函数ROW_NUMBER
- SQL Server 2005下的分页SQL ,row_number是个鸡肋
- Sql Server 2005 row_number()分页性能测试
- SQL Server 2005 中 ROW_NUMBER() 函数的简单用法
- sql server 2005 中的利用ROW_NUMBER() 解决数据分页问题
- 一个利用Sql Server 20005的 ROW_NUMBER Function 的分页存储过程.
- [转]一个利用Sql Server 20005的 ROW_NUMBER Function 的分页存储过程.
- SQL Server 排序函数 ROW_NUMBER和RANK 用法总结