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

本文介绍了SQLServer 2012/2014引入的新分页方法OFFSET/FETCH NEXT,对比了它与Row_number()分页的性能,并展示了如何使用此新方法进行高效分页查询。实验结果显示OFFSET/FETCH NEXT在性能和易读性上优于传统方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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唯一约束

转载于:https://my.oschina.net/tianma3798/blog/917298

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值