使用SQL Server 2005的最佳分页解决方案?

使用sql Server 2005针对大约5,000-10,000行的表最有效的分页解决方案是什么?我已经看到几个,但没有比较他们.

解决方法

对于一个大小的表,使用Common-Table Expression(CTE)和ROW_NUMBER;使用一个小的函数来计算基于@PageNumber和@PageSize变量(或任何你想要调用它们)的记录.我们的一个存储过程的简单例子:
-- calculate the record numbers that we need

DECLARE @FirstRow INT,@LastRow INT
SELECT  @FirstRow   = ((@PageNumber - 1) * @PageSize) + 1,@LastRow    = ((@PageNumber - 1) * @PageSize) + @PageSize

;
WITH CTE AS
(
    SELECT [Fields],ROW_NUMBER() OVER (ORDER BY [Field] [ASC|DESC]) as RowNumber 
    FROM [Tables]
    WHERE [Conditions,etc]
)
SELECT * 
       -- get the total records so the web layer can work out
       -- how many pages there are,(SELECT COUNT(*) FROM CTE) AS TotalRecords
FROM CTE
WHERE RowNumber BETWEEN @FirstRow AND @LastRow
ORDER BY RowNumber ASC

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03