首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server重叠NC索引,删除问题

Server重叠NC索引,删除问题
EN

Database Administration用户
提问于 2021-03-26 04:29:09
回答 2查看 78关注 0票数 0

我正在对SQL '14 DB进行索引清理/调优,并运行了一个6MM行、16个字段表和两个具有以下定义的非聚集、非唯一索引:

  • IX_1 ON Tbl1
  • IX_2 ON Tbl1 INCLUDE (field3,field4)

这两个索引的读/写数据显示了IX_1当前对它的500万查找/扫描,对IX_2的10k查找/扫描,每个索引都有相同的更新。我的索引调优感说,不用再想一想就放弃IX_1,因为它已经被IX_2完全覆盖了,但是优化器对使用IX_1的极端偏好让我有点害怕。在这种情况下放弃IX_1是否有理由三思而后行呢?谢谢。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2021-03-26 04:50:55

当两个索引都满足一个查询时,您会发现这两个索引中较小的一个被选中。通常,这意味着索引更窄,但对于完全重复的、相同的索引也适用,物理上较小的索引是首选的。

除非您正在扫描索引,并且需要考虑整个索引大小,否则您的索引调优Spidey感觉是正确的。删除IX_1,查询将使用IX_2。那些寻求的人几乎不会注意到。

票数 3
EN

Database Administration用户

发布于 2021-03-26 04:46:21

如果删除IX_1,以前使用它的所有查询现在都将开始使用IX_2。由于IX_2更大(另一个键字段和两个包含字段),它有:

  • 更多支持第二键列的非叶级页面。
  • 更多的叶级页面来存储每一行的包含列值

任何目前使用IX_1的查询都不需要这些额外的字段,否则它们就已经在使用IX_2了。随着IX_1的消失,他们将不得不读取更多的数据才能生成相同的结果集。

单个列索引(如IX_1 )对编写工作负载的影响通常很小,这取决于数据类型。我看不出有什么令人信服的理由放弃它。

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

https://dba.stackexchange.com/questions/287735

复制
相关文章

相似问题

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