您的位置:首页 > Web前端

SqlServer 2012/2014新增Offset,Fetch Next分页方式

2017-06-08 00:00 483 查看
一、Offset Fetch Next的用法

sql2012的新分页方式 OFFSET/FETCH NEXT

语法:

OFFSET=偏移,跳过 rows
FETCH = 取  rows only

1.越过1万条,去除50条

SELECT ShopName from Shop  ORDER BY ShopName   OFFSET 100000 ROW  FETCH NEXT 50 ROW ONLY

2.仅使用Offset 跳过

SELECT ShopName from Shop  ORDER BY ShopName   OFFSET 100000 ROW

二、Offset Fetch next 的性能更好

1.使用Row_number() 方式分页

假装有个表Shop,其中有一列ShopName,取100000到100050条数据。

SELECT * FROM  (
SELECT ShopName , ROW_NUMBER() OVER(ORDER BY ShopName)  as R  FROM Shop
) t  WHERE R>100000 AND R<=100050

2.使用 Offset Fetch方式

SELECT ShopName from Shop  ORDER BY ShopName   OFFSET 100000 ROW  FETCH NEXT 50 ROW ONLY


比较:

之所以取十万条以后的数据,能明显看出执行时间上的差异。虽然前人们已经给出过很多论证,我这里还是贴一下比较结果。

先是ROW_NUMBER



再是 OFFSET FETCH



高下立判,后者既高效又好写易懂有木有!

回顾SqlServer中分页方式的变化:

SqlServer2000时候使用top 的方式

SqlServer2005的时候开始使用Row_Number()

SqlServer2012的时候出现Offset Fetch Next。

更多:

SqlServer update set from的用法整理

SqlServer默认值

SqlServer unique唯一约束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SqlServer 2012分页