【发布时间】:2010-10-01 10:16:41
【问题描述】:
我正在调整我的 SQL Server 2008 数据库的性能,并正在使用各种 DMV 的输出来识别缺失的索引、未使用的索引等。
我主要使用这 3 个脚本(来自 SQLServerCentral.com),它们依赖于 SQL Server 提供的 DMV 数据:
The Ultimate Missing Index Finder
The Ultimate Duplicate Index Finder
The Ultimate Index Usage Reporter
在尝试创建新索引时,我知道我需要很聪明,并尝试通过创建恰到好处的方式将许多建议组合到尽可能少的索引中,以便它们能够出色地为几个不同的索引提供服务查询与为每个查询创建单独的索引,唯一的区别可能是包含的列等。
所以我想了解社区的想法,看看人们是否可以回答一些关于阅读 DMV 结果和构建新索引的问题。
索引中包含的列的顺序是否重要?
采取以下两个索引建议。你会怎么做才能让 1 适合两者?
object_name equality_columns inequality_columns included_columns
Appointment [FranchiseId], [AppointmentTypeId] [CustomerId], [ApptDateTime] NULL
Appointment [FranchiseId], [AppointmentTypeId] [ApptDateTime] [CustomerId]
如果我有很多索引建议具有相同的等式和不等式字段但包含的字段不同,那么是包含更多字段还是包含更少的字段更好?同样,目标是创建 1 个索引与 3 个(如果 3 个包含不同的列)。
最后,如果有任何好的资源可以为此类事情提供好的经验法则或一般指导方针,如果可以提供这些链接,我将不胜感激。
【问题讨论】:
-
要做出正确的索引选择,您需要添加一些然后测试。如果它工作正常,然后停止。如果它不能正常工作,请尝试替代方案。很难说有一种万能的解决方案。这真的取决于使用模式。
-
肯定明白。我希望最初在一个相当未索引的数据库上进行第一轮更改。我的第一次迭代我试图将表的 19 个索引建议缩小到尽可能少。我的计划肯定是添加,观察然后重新评估结果。
标签: sql sql-server-2008 indexing performance