【发布时间】:2012-02-22 09:38:20
【问题描述】:
我在从 SQL Server 中选择大数据时遇到了问题。我有一个 200 列和 200 000 行的视图。我正在使用 Solr 索引的视图。
我尝试通过分页来选择数据,但花了很多时间(超过 6 小时)。现在我在不分页的情况下选择它,它需要 1 小时。但是 SQL Server 占用大量内存。
在这种情况下,从 SQL Server 2008 R2 中选择大数据的最佳方法是什么?
提前致谢。
【问题讨论】:
-
您能否发布您正在使用的查询,向我们展示您是如何进行分页和过滤的?
-
这里是分页代码
WITH SpecialTable AS ( SELECT ROW_NUMBER() OVER (ORDER BY DataId) AS 'RowNumber', * FROM [dbo].[Data] ) SELECT * FROM SpecialTable WHERE RowNumber BETWEEN {0} AND {1}; -
将您的简单示例改编为包含 7340 万行的索引(在 sql 中)表。选择前 1000 是次秒。假设服务器资源没有严重不足,您可能会遇到索引问题。
-
如果您在管理工作室中运行该查询并返回 1 行并且需要 1 小时,那么您的 DBA 需要仔细查看数据库/服务器,看看它是否适合目的。它没有任何问题;如果您要向用户返回 200k 行,请考虑它是否是呈现它的最佳方式。如果您正在处理 200k 行,可以在数据库引擎中完成吗?如果所有这些都不是,我会查看网络速度并找出如何改进它。