http://www.cn-web.com/shtml/article/main/2009/07/12/918.shtml
公司一项目数据达到上百万,普通的分页方式满足不了要求,经常发生超时的错误,所以有必要对分页的方式来做下研究。
经过搜集和测试,当前网上的成熟的分页方式有以下几种方案:
分页存储过程1.
以下为引用的内容: CREATE PROCEDURE p_qcd_Pagination |
此方案只适合单表,中小数据查询,当条件出现in(1,2,3,4,5……)时,则速度明显下降。
分页存储过程2
此分页俗称二分法,执行效率超快,数据量达到百万后效率也没有明显下降,缺点同上,当条件出现in(1,2,3,4,5……)时,则速度明显下降。
分页存储过程3
以下为引用的内容: declare @timediff datetime --耗时测试时间差 cn-web.com提供 exec sp_cursoropen @cursor output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output |
此方案所说是微软没有公开的游标分页,刚开始怀疑游标分页肯定浪费性能,不过经过详细测试后,发现微软就是微软,不管如何测试,不管条件如何复杂,数据量再大,性能一直保持最强劲。
总结:在没有in(1,2,3,4,5……)之类的条件的查询时,三种方案的性能:方案3=方案2>方案1。当存在复杂条件时,方案3>方案2=方案1。