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

前端之家收集整理的这篇文章主要介绍了使用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

猜你在找的MsSQL相关文章