首页 > 数据库技术 > 详细

数据库分页

时间:2016-06-23 14:18:23      阅读:303      评论:0      收藏:0      [点我收藏+]

1. ROW_NUMBER() 的分页方法

DECLARE @currentPage INT =2,@pageSize INT =5;
WITH cte AS(
SELECT ROW_NUMBER() OVER(ORDER BY OrderId desc) rowid,* FROM dbo.EC_Orders)
SELECT * FROM cte WHERE rowid > (@currentPage-1)*@pageSize AND rowid<= @currentPage*@pageSize

 

 

2. Offset and Fetch 的分页方法

DECLARE @currentPage INT =2,@pageSize INT =5;
SELECT * FROM dbo.EC_Orders ORDER BY OrderId DESC OFFSET (@currentPage-1)*@pageSize ROW FETCH NEXT @pageSize ROWS ONLY

 

综合性能比较:

在 Sql Server 2012 里面,分页方法中,Offset and Fetch 同 ROW_NUMBER() 比较起来,无论是性能还是语法,都是有优势的。

但是性能方面,优势并不是太大,两者 的 IO 消耗完全相同,只是 在 CPU 方面,Offset and Fetch 方面要好一些,但是不明显。如果对于一个 每秒都要处理成千上万条的分页Sql语句的DB 来说,Offset and Fetch 在CPU 方面的优势会比较明显的,否则,性能的提升并不明显。
语法方面 Offset and Fetch 则是十分的简洁,一句搞定,比起 Row_Number() 好了太多 

数据库分页

原文:http://www.cnblogs.com/kaikaichao/p/5610586.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!