首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反对使用本地索引的原因

反对使用本地索引的原因
EN

Database Administration用户
提问于 2011-09-02 18:14:59
回答 2查看 157关注 0票数 2

对于Oracle 10g和更高版本:除了不能使用本地索引且需要全局索引(例如唯一约束)的情况外,是否有任何理由支持全局索引而不是本地索引?

EN

回答 2

Database Administration用户

发布于 2011-09-02 19:49:19

在某个点上,使用索引的查询访问足够多的分区,以致本地索引将比全局索引慢。

例如,如果您的表按日期进行分区,但您只在状态列上查询。

票数 2
EN

Database Administration用户

发布于 2019-10-23 16:20:10

回答已经从利分到主要的回溯。

但他的答案只有在匹配记录的基数很小时才是正确的。如果要搜索列具有唯一或几乎唯一的值(但对于status列通常不是这样),这肯定是很糟糕的。在这种情况下,许多本地索引将以非常低的成功率访问,这会产生高无用的I/O,而且效率很低。在这种情况下,全局索引的工作效率要高得多。

但是,它取决于分区的数量,分区的大小与匹配记录的数量有关。

如果您选择了更大数量的记录,并有机会在许多分区中找到它们,那么这种回溯就不再有实际意义了。状态列通常是这样的,只有几个不同的值。

例如:

拥有一个有100个分区的表,例如by DATE,并且只想搜索一个status列:如果匹配记录的基数是10000,那么您可能会在每个分区中找到记录。在这种情况下,您将无法从全局索引中真正受益,尽管它可能会快几毫秒。但是,本地指数的好处往往克服了这种回溯。

反对本地索引的另一个原因可能是,索引维护需要更多的知识。例如,不能通过"ALTER重建“来像全局索引那样重建本地索引,因为每个分区都需要处理和重建。在24/7小时的手术中,这可能是一个很大的优势,但是有些人不喜欢这样的努力。

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

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

复制
相关文章

相似问题

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