2011-04-01 60 views
1

我有一个sql 2005中的表与大数据 - 现在像1 500 000行,后来它应该更多。在分页之前,我需要检测用户可以读取哪些行(用于检查的sql查询很重要,并引用其他几个表),并且应该分页结果。SQL 2005巨大的表格数据分页与过滤器

最好的做法是使用巨大的表格进行过滤和分页。

在此先感谢!

回答

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 

确保你有适当的指标到位。如果您遇到性能问题,那么我会建议查看执行计划并查看问题区域的位置。

+0

实际上row_number()函数在性能上不是很好。例如,如果您有一个具有1 500 000的表格并且只需要最后20行(最后一页),则即使没有过滤也需要很长时间。 – SchmerZ 2011-04-02 07:25:21