我将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分钟即可完成。我确实为此和其他表设置了索引。我能做些什么来加快这件事吗?
答案 0 :(得分:3)
因为您没有WHERE
子句,所以您正在执行表扫描,该扫描会读取整个表。这总是相对缓慢;索引根本没用。
要加快查询速度,请选择较少:)尝试输入WHERE
子句,这样您就只对特定日期内的某些标记或问题感兴趣。然后,您可以在这些列上添加索引以加快查询速度。
答案 1 :(得分:1)
如果您正在复制,请查看SqlBulkCopy API。我使用该API进行了10分钟到4秒的插入。
但杰里米完全正确。您期望运行包含字符串(正文列)的800000多个结果的查询。如果你不需要身体那么你可能会显着加快结果。
您使用哪种硬件(特别是HDD)用于SQL Server。如果你把这样的数据库推到你的C:\那么你就不会得到想要的结果。
您是否也启用了全文目录?如果您在帖子文本中搜索,那么此索引将显着提高您的速度。