在Stack Overflow数据转储上运行查询时,SQL Server速度极慢

时间:2009-08-30 09:32:57

标签: sql sql-server database sql-server-2008 optimization

我将Stack Overflow数据转储导入SQL Server 2008.一些查询,尤其是Posts表上的查询,需要花费一分多钟才能返回。

示例查询:

SELECT   
  Id, PostTypeId, AcceptedAnswerId, CreationDate, 
  Score, ViewCount, Body, OwnerUserId, OwnerDisplayName,
  LastEditorUserId, LastEditDate, LastActivityDate, Title,
  Tags, AnswerCount, CommentCount, FavoriteCount, ClosedDate, ParentId
FROM dbo.Posts

查询返回881665行,只需不到2分钟即可完成。我确实为此和其他表设置了索引。我能做些什么来加快这件事吗?

2 个答案:

答案 0 :(得分:3)

因为您没有WHERE子句,所以您正在执行表扫描,该扫描会读取整个表。这总是相对缓慢;索引根本没用。

要加快查询速度,请选择较少:)尝试输入WHERE子句,这样您就只对特定日期内的某些标记或问题感兴趣。然后,您可以在这些列上添加索引以加快查询速度。

答案 1 :(得分:1)

如果您正在复制,请查看SqlBulkCopy API。我使用该API进行了10分钟到4秒的插入。

但杰里米完全正确。您期望运行包含字符串(正文列)的800000多个结果的查询。如果你不需要身体那么你可能会显着加快结果。

您使用哪种硬件(特别是HDD)用于SQL Server。如果你把这样的数据库推到你的C:\那么你就不会得到想要的结果。

您是否也启用了全文目录?如果您在帖子文本中搜索,那么此索引将显着提高您的速度。