我查资料大部分分页查询在查询后面分页时候,性能下降非常厉害,查资料啥的,找到个不错的分页语句.

第一个分页语句

SELECT StatisticsDate,* FROM ((select ROW_NUMBER() over(order by BusinessID) as row_num,* from OverDueStatic WITH(NOLOCK) where StatisticsDate='2018-7-18')) o where o.row_num between 0 and 5

大部分这个语句性能够高了,但实际还是不理想,因为主查询语句,扫全表。

第二个分页语句

Declare @bid int 
Declare @start int 
Declare @pagesize int 

SET @start=5
SET @pagesize=10

--下面两行实现快速滚动到我们要取的数据的行,并把ID记录下来 
Set Rowcount @start 
Select @bid=BusinessID from OverDueStatic WITH(NOLOCK) WHERE StatisticsDate='2018-7-18' Order by BusinessID

Set Rowcount @pagesize 
--能不用*就不用 
Select BusinessID,* From OverDueStatic o WITH(NOLOCK) WHERE StatisticsDate='2018-7-18' AND BusinessID>=@bid Order By o.BusinessID
Set Rowcount 0 

 

这个语句性能不错,回来测试下具体情况