当前位置:  开发笔记 > 数据库 > 正文

是否有必要考虑删除现有索引,因为它是推荐索引的前缀

如何解决《是否有必要考虑删除现有索引,因为它是推荐索引的前缀》经验,为你挑选了3个好方法。

Oracle SQL Developer v3的SQL Tuning Advisor为我的查询建议如下:

考虑运行Access Advisor以改进物理架构设计或创建建议的索引. 如果您选择创建推荐索引,请考虑删除索引 " SCHEMANAME "." INDEXNAME "(在"COLUMN1"上),因为它是推荐索引的前缀.

create index SCHEMANAME.NEW_INDEXNAME on SCHEMANAME.TABLENAME("COLUMN1","COLUMN2");

是否有任何伤害不是在做大胆的建议?问题是它建议丢弃的现有索引被其他程序使用.我不认为这些因素会相互"伤害",是否有任何缺点让两个索引与它们将占用的磁盘空间分开,并且在插入/更新时性能下降不明显?



1> Sam DeHaan..:

因此,假设OLD INDEX在[Column1]上并且RECOMMENDED INDEX在[Column1] [Column2]上,则建议的索引也可用于现有查询.

简而言之:正如您所说,删除 OLD INDEX会提高插入/更新的性能,也不会降低在使用OLD INDEX的查询上搜索过扫描的能力.推荐索引仍然允许查找[Column1]值以及[Column1] [Column2]值.

因此,除了更新/插入的性能下降和额外的存储开销之外没有任何损害,但是维护这两个索引也没有任何好处.


+1但也许您还可以添加额外存储空间的缺点?

2> Jeff..:

实际上,当您在单列上删除索引时,性能可能会下降.

假设你用查询进行查询WHERE [Column1] = 123.这可以通过原始索引完美地解决.新索引也可用于此,但将依赖于实现 - 需要读取索引中[Column2]的值,即使它们未被使用.

所以是的:从理论上说,降低指数可能是一个缺点:增加读数.

[9月9日更新]
最近我遇到了另一种情况,即单个索引可以比组合索引好得多.
考虑一个巨大的表'错误'列[status],[createdate]和其他一些字段.大多数错误将被关闭,因此对于100条记录,状态为"0"(打开),对于99000条记录,"1"(已关闭).

SELECT * FROM bugs WHERE status = '0'将从索引中获益,statusSELECT * FROM bugs WHERE status = '1'索引status则无济于事.

Oracle将了解其差异,因为它构建了索引的统计信息.

但是,status, createdate每个索引条目的组合索引几乎是唯一的,Oracle将决定不使用索引进行查询,SELECT * FROM bugs WHERE status = '0'因为它猜错(错误地)索引无效.

因此,在这种情况下,不应仅仅因为它是组合索引的前缀而丢弃单个索引.

注意:从理论上讲,Oracle可以在索引上构建更智能的统计数据,但似乎并没有这样做.


+1.我觉得这很明显,我很惊讶你没有得到更多的选票.如果你的索引更大,并且包含并非每个查询都需要的信息,那么在某些情况下肯定会有性能损失.
不知道任何文档,只是我对如何理解索引如何工作的解释.索引中有两列使总索引的大小增加一倍.当索引非常有选择性(或唯一)时,Oracle通常只需要读取一些"块"即可获得所需的所有信息.当索引大两倍时,它有可能需要读取更多块.但是,我认为在所有实际案例中效果都可以忽略不计.

3> Ollie..:

不丢弃原始索引的危害是Oracle在只需要一个索引时维护两个索引的开销.

离开它们的缺点是CRUD操作在桌面上的表现有所下降,我从你的帖子中发现,这可能是"微不足道的",但是随着时间的推移,桌子会增长,这将导致你遇到的问题要补救.

它还会不必要地占用更多存储空间.

您之前的程序仍然可以使用新索引.

留下不必要的索引会使未来的开发人员和DBA必须支持您的数据库,这会花费他们花费时间和精力来调查重复索引存在的原因.

我没有寻找不放弃原始索引的理由,而是寻找保留它的理由.

删除它,测试你的"其他"程序的性能,你应该看到一点点差别,如果有问题你可以调查原因,如果有必要更换它.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有