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

问题描述 投票:0回答:1

我在 sql 2005 中有一个表,其中包含大量数据 - 现在大约有 1 500 000 行,以后应该会更多。在分页之前,我需要检测用户可以读取哪些行(用于检查的 SQL 查询很繁重,它引用了其他几个表)并且应该对结果进行分页。

处理应该被过滤和分页的巨大表的最佳实践是什么?

提前致谢!

sql-server pagination sql-server-2005
1个回答
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

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

© www.soinside.com 2019 - 2024. All rights reserved.