SQL 2005带过滤器的巨大表数据分页

时间:2011-04-01 11:50:47

标签: sql-server sql-server-2005 paging

我在sql 2005中有一个表有大量数据的表 - 现在就像1 500 000行一样,后来它应该更多。在分页之前,我需要检测用户可以读取的行(用于检查的sql查询是一个很重的,引用其他几个表),结果应该被分页。

使用应该过滤和分页的庞大表格的最佳做法是什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果要在SQL Server中返回分页结果,最好的办法是使用ROW_NUMBER()函数。这是一个可以获得第400至第410个结果的例子:

SELECT  ID, Name, Date
FROM     (SELECT TOP 410 ROW_NUMBER() OVER (ORDER BY id)
             AS Row, ID, Name, Date FROM MyTable)
            AS MyPagedTable
WHERE  Row >= 400 AND Row <= 410

确保您有适当的索引。如果您遇到性能问题,我建议您查看执行计划并查看问题所在的位置。