码迷,mamicode.com
首页 > 数据库 > 详细

数据库分页

时间:2016-06-23 14:19:46      阅读:243      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!