在DMV sys.dm_db_missing_index_group_stats中,有一个名为avg_user_impact的字段。根据BOL,这显示了



当我运行查询以查找对性能影响最大的缺失索引时,我看到一些人声称avg_user_impact会成千上万。

我使用这些建议之一建立了索引,但根据DMV sys.dm_db_index_usage_stats从未使用过该索引。禁用索引后,它立即再次显示为丢失的索引。

一旦avg_user_impact字段显示超过100,是否有可能出错?还是这是一个示例,说明仍然必须如何测试推荐索引的有效性?我在做什么错或误解?

最佳答案

推荐的索引和用户影响都是成本优化器的估算值,如您所见,不能保证它们总是正确的。我认为用户影响列在设计上可能会超过100(尽管我们必须希望SQL Server团队的MS开发人员在此做出答复,才能找到真正的答案。)测试是否创建显示在表中的索引始终至关重要。 DMV是否可以工作。我曾经在其中显示索引的经验相同,但是创建索引后实际上并没有使用它,这可能是由于查询的详细信息或表中的数据分布等原因。在大多数情况下, View 是正确的,特别是对于简单的情况,但并非总是如此。

另外,在创建真正宽的索引时要小心,因为它们可能会影响插入/更新性能,而不是帮助选择性能,这取决于服务器的繁忙程度。

09-26 21:15