加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 盲目添加缺失索引是否可以?

发布时间:2021-01-14 20:08:26 所属栏目:MsSql教程 来源:网络整理
导读:我经常使用SSMS测试我的慢速存储过程是否缺少索引.每当我看到“缺失索引(影响xxx)”时,我的膝盖反应就是创建新索引.据我所知,每次都会产生更快的查询速度. 我不应该继续这样做的任何理由? 解决方法 很多原因. 我能想到的最大问题之一是缺失的索引DMV没有考虑

我经常使用SSMS测试我的慢速存储过程是否缺少索引.每当我看到“缺失索引(影响xxx)”时,我的膝盖反应就是创建新索引.据我所知,每次都会产生更快的查询速度.

我不应该继续这样做的任何理由?

解决方法

很多原因.

我能想到的最大问题之一是缺失的索引DMV没有考虑现有的索引.

例:

你有一张ColA,ColB,ColC的桌子.

目前你有一个关于ColA的索引.缺失的索引DMV将建议您在(ColA,ColB)上添加索引.这可能是正确的,但聪明的做法是将ColB添加为现有索引的第二个键.否则,您的覆盖范围会重复,浪费空间和开销.

同样,如果您有ColB INCLUDE(ColA)的索引,它可能会建议ColB INCLUDE(ColC)的索引.同样聪明的做法是将ColC添加到现有索引中的包含列表中.

建议的索引具有极窄的视图 – 它们只查看单个查询或单个查询中的单个操作.他们没有考虑已存在的内容或您的其他查询模式.

您仍然需要一个有思想的人来分析整体索引策略,并确保您的索引结构是高效和有凝聚力的.

如果只是添加所有建议的索引没有问题,那么甚至不需要建议它们 – 它们将自动实现.

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读