SQL Tuning Advisor提供了许多共享许多相同列的建议索引..我应该添加所有这些吗?

时间:2014-04-15 18:08:23

标签: sql sql-server performance indexing profiler

使用SQL Tuning Advisor分析SQL事件探查器文件时,它会为我选择的经常连接的几个表推荐5个或更多非聚集索引。

这些索引共享许多相同的列。例如,如果表具有列A,B,C,D和E,则索引可能是

1  A B E
2  A B C D
3  B D E

等等

通常的做法是添加所有这些建议,还是应该尝试确定哪些建议会包含所有可加入的列?

1 个答案:

答案 0 :(得分:1)

您正在进入一个非常复杂的DBA工作领域。 我什么时候需要很多索引?什么时候可以使用更多的覆盖索引?

如果对表进行了大量编写,则需要确保没有多个索引,因为这会降低插入/更新/删除性能。

此外,您不需要重叠索引,因为这会浪费存储空间。

您需要注意的是,为索引选择的顺序和列确实重要

我总是用电话词典作为例子。

如果后面的索引是firstname, lastname,则surname = Smith的序列将导致整个索引扫描,如果不是表扫描。

因此选择索引非常重要。

并且还记得使用包含列,这将极大地提高查询性能,您可以在执行计划中找到关键查找,但权衡的是您使用额外的存储空间。

如果您开始学习查询优化,使用索引顾问会很棒,但我会建议您更好地理解执行计划,并缩小对某些表最需要的查询类型。