我在 sql 2005 中有一个表,其中包含大量数据 - 现在大约有 1 500 000 行,以后应该会更多。在分页之前,我需要检测用户可以读取哪些行(用于检查的 SQL 查询很繁重,它引用了其他几个表)并且应该对结果进行分页。
处理应该被过滤和分页的巨大表的最佳实践是什么?
提前致谢!
如果您想在 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
确保您有正确的索引。 如果您遇到性能问题,那么我建议您查看执行计划并查看问题所在。