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

来源:互联网 发布:非负矩阵分解 应用 编辑:程序博客网 时间:2024/05/29 18:25

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

 

 

原创粉丝点击