加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在SQLServer2005下的通用分页存储过程

发布时间:2020-12-12 15:59:07 所属栏目:MsSql教程 来源:网络整理
导读:利用SQLServer2005提供的新功能 ROW_NUMBER() 方法实现的分页,此分页存储过程与上一个分页存储过程在效率上的区别为: 1、如果执行的SQL语句为对单表或有表关联(用left join、right join、inner join等)的表关系比较简单,则用此方法速度相对上一种方法快

利用SQLServer2005提供的新功能 ROW_NUMBER() 方法实现的分页,此分页存储过程与上一个分页存储过程在效率上的区别为:
1、如果执行的SQL语句为对单表或有表关联(用left join、right join、inner join等)的表关系比较简单,则用此方法速度相对上一种方法快;
2、如果?执行的SQL语句为对多表关联并且表关系比较复杂,则用上一种方法速度快。经测试,二种方法对一个具有100多万条记录的表进行查询,当查询最后一页时,速度也比较快,传统的查询方法:先查询符合条件的指定页前面的所有数据后,再查询指定页数减一的数据,然后在先查询的数据中过滤掉后查询的数据。如果用这种方法查询最后一页,将会不堪重负。

本想写一个通用存储过程的,但不是很方便,就是实现了,调用也不方便,
下面列出片段,在实际应用中,在于大家发挥各自的能力了:

WITH ?Table_Data? AS
(
SELECT ?ROW_NUMBER()? OVER ?( ORDER ? BY ?MemberPKId)? AS ?RowIndex,? *
FROM ?CUS_COMPANY_MAIN?A? WITH ?(NOLOCK)
)
SELECT ? * ? FROM ?Table_Data
WHERE ?RowIndex? BETWEEN ? 1 ? AND ? 20

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读