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

利用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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值