使用SQL Tuning Advisor分析SQL事件探查器文件时,它会为我选择的经常连接的几个表推荐5个或更多非聚集索引。
这些索引共享许多相同的列。例如,如果表具有列A,B,C,D和E,则索引可能是
1 A B E
2 A B C D
3 B D E
等等
通常的做法是添加所有这些建议,还是应该尝试确定哪些建议会包含所有可加入的列?
答案 0 :(得分:1)
您正在进入一个非常复杂的DBA工作领域。 我什么时候需要很多索引?什么时候可以使用更多的覆盖索引?
如果对表进行了大量编写,则需要确保没有多个索引,因为这会降低插入/更新/删除性能。
此外,您不需要重叠索引,因为这会浪费存储空间。
您需要注意的是,为索引选择的顺序和列确实重要。
我总是用电话词典作为例子。
如果后面的索引是firstname, lastname
,则surname = Smith
的序列将导致整个索引扫描,如果不是表扫描。
因此选择索引非常重要。
并且还记得使用包含列,这将极大地提高查询性能,您可以在执行计划中找到关键查找,但权衡的是您使用额外的存储空间。
如果您开始学习查询优化,使用索引顾问会很棒,但我会建议您更好地理解执行计划,并缩小对某些表最需要的查询类型。