在 Stack Overflow 数据转储上运行查询时,SQL Server 非常慢

标签 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 分钟即可完成。我确实为这个表和其他表设置了索引。我能做些什么来加快这件事吗?

最佳答案

因为您没有 WHERE 子句,所以您正在执行表扫描,它会读取整个表。这总是相对较慢;索引根本无济于事。

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

关于在 Stack Overflow 数据转储上运行查询时,SQL Server 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1353499/

相关文章:

database - 具有不同编码的 Postgres 数据库

sql - 如何只选择一个表中包含另一个表中所有值的记录?

sql - MYSQL 中多态关联的最佳实践

c# - C#代码与SQL Server 2008存储过程的性能比较

SQL Server 内联 CASE WHEN ISNULL 和多重检查

sql-server - 如何在 SSIS 中创建日志文件

android - 在 Android 上测试与服务器的连接

mysql - 有没有办法在游标声明的 ORDER BY 子句中有一个变量?

sql - 哪个 RDBMS 或其他工具提供了良好的 SQL 语法错误消息?

SQL - 列中的相似数据