首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql server avg_user_impact

sql server avg_user_impact
EN

Stack Overflow用户
提问于 2009-07-28 14:53:12
回答 2查看 10.6K关注 0票数 9

在DMV sys.dm_db_missing_index_group_stats中,有一个名为avg_user_impact的字段。每个波尔,这显示

如果实现了这个缺失的索引组,用户查询可以体验到

平均百分比的好处。该值意味着,如果实现了这个缺失的索引组,查询成本将平均下降这个百分比。

当我运行一个查询来查找对性能影响最大的缺少的索引时,我看到一些人声称avg_user_impact将有数千个。

我建立了一个索引使用这些建议之一,它从来没有使用根据DMV的sys.dm_db_index_usage_stats。当我禁用索引时,它立即再次显示为缺少的索引。

一旦avg_user_impact字段显示超过100,是否有可能是错误的?或者,这是一个例子,说明推荐的索引仍然必须测试是否有用?我做错了什么或者误解了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-30 17:33:54

推荐的索引和用户影响都是成本优化器的估计,而且,正如您所看到的,不能保证它们总是正确的。我认为用户影响列按设计可以超过100 (虽然我们必须希望Server团队的MS开发人员在这里响应,以获得真正的答案)。测试创建DMV中显示的索引是否有效始终是至关重要的。我有过同样的经验,在那里显示索引,但是一旦创建了索引,就不会实际使用,可能是因为查询的细节或表中的数据分布等等。视图大多数时候都是正确的,特别是对于简单的情况,但并不总是如此。

此外,在创建非常宽的索引时要小心,因为它们可能对insert/update性能的影响大于它们对选择性能的帮助,这取决于服务器的繁忙程度。

票数 8
EN

Stack Overflow用户

发布于 2014-08-21 16:04:25

还必须更新表统计信息,以确保SQL引擎使用新创建的索引。

创建索引后运行

使用AdventureWorks2012;GO EXEC sp_updatestats;GO

Update STATISTICS命令将确保所有缓存的SQL计划都无效,并使用新创建的索引构建新的sql执行计划。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1194668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档