我在sql 2005中有一个表有大量数据的表 - 现在就像1 500 000行一样,后来它应该更多。在分页之前,我需要检测用户可以读取的行(用于检查的sql查询是一个很重的,引用其他几个表),结果应该被分页。
使用应该过滤和分页的庞大表格的最佳做法是什么?
提前致谢!
答案 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
确保您有适当的索引。如果您遇到性能问题,我建议您查看执行计划并查看问题所在的位置。