微软没有公开的游标分页

转发的,原文地址在 http://87cool.spaces.live.com/blog/cns!C961D7041DDB28DA!269.entry

 

CREATE  procedure p_qcd_Paginationcursor 
@sql  nvarchar( 4000),  -- 要执行的sql语句 
@currentpage  int = 1-- 要显示的页码 
@pagesize  int = 10-- 每页的大小 
@pagecount  int = 0 out,  -- 总页数 
@recordCount  int = 0 out -- 总记录数 
as 
set nocount  on 
declare  @cursor  int  -- cursor 是游标的id

declare  @timediff  datetime   -- 耗时测试时间差 cn-web.com提供 
select  @timediff = getdate() 

exec sp_cursoropen  @cursor output, @sql, @scrollopt = 1, @ccopt = 1, @rowcount = @pagecount output 
select  @recordCount = @pagecount 
select  @pagecount = ceiling( 1.0 * @pagecount / @pagesize) , @currentpage =( @currentpage - 1) * @pagesize + 1 
select  @pagecount, @currentpage 
exec sp_cursorfetch  @cursor , 16, @currentpage, @pagesize 
exec sp_cursorclose  @cursor 
select  datediff(ms, @timediff, getdate())  as 耗时 
GO 

 

 

此方案所说是微软没有公开的游标分页,刚开始怀疑游标分页肯定浪费性能,不过经过详细测试后,发现微软就是微软,不管如何测试,不管条件如何复杂,数据量再大,性能一直保持最强劲。

你可能感兴趣的:(分页)