在SQLServer 2000中进行分页查询的最有效方法是什么?
其中"分页查询"相当于在MySQL中使用LIMIT语句.
编辑:在这种情况下,存储过程是否可以比任何基于集合的查询更有效?
对大型Resultsets进行分页,获胜者正在使用RowCount.还有一个用于更复杂查询的通用版本.但是赞扬Jasmin Muharemovic :)
DECLARE @Sort /* the type of the sorting column */ SET ROWCOUNT @StartRow SELECT @Sort = SortColumn FROM Table ORDER BY SortColumn SET ROWCOUNT @PageSize SELECT ... FROM Table WHERE SortColumn >= @Sort ORDER BY SortColumn
本文包含完整的源代码.
请阅读"更新2004-05-05"信息.!
我认为嵌套SELECT TOP n
查询可能是实现它的最有效方法.
SELECT TOP ThisPageRecordCount * FROM Table WHERE ID NOT IN (SELECT TOP BeforeThisPageRecordCount ID FROM Table ORDER BY OrderingColumn) ORDER BY OrderingColumn
更换ThisPageRecordCount
每页和物品BeforeThisPageRecordCount
有(PageNumber - 1) * items-per-page
.
当然,SQL Server 2005中更好的方法是ROW_NUMBER()
在CTE中使用该功能.