天天看点

什么情况下使用全局索引和本地索引

我举个 global 索引的例子

查询 条件 不走 分区键这个值

但是 我走另外一个where条件

而且选择性很高

假设索引高度为3

不跨越分区 扫描3个block +1个 data block

跨越分区 扫描 1000个 分区 *3 +1个data block

扫描要跨越 多个 分区你就建立 global

条件里不带上了分区键对应的列,对应的列就用GLOBAL

oracle会对主键自动创建全局索引

我 有一个查询

查询 条件 不走 分区键这个值

但是 我走另外一个where条件

总结就是

扫描要跨越 多个 分区

你就建立 global

global 索引是为了解决 跨越 分区扫描的用的

总结:

全局索引:

优点:通过索引检索,没有限定分区的谓词、或跨分区时,性能好点,

缺点:分区维护的时候麻烦,drop分区等维护会失效,dml的时候索引维护成本高,数据大了rebuild也难

local 索引:

优点:通过索引检索,有限定分区的谓词、不跨分区时,性能好,分区维护容易,dml的索引维护底,rebuild也方便。

缺点:通过索引检索,又没有限定分区的谓词、或跨分区时,性能不如全局索引

有分区裁剪的,那么其他列就建立分区索引

就是where 条件里带上了分区键,对应的列 就用LOCAL

没有分区裁剪的,那么列就建立global 索引

转载于:https://www.cnblogs.com/zhaoyangjian724/p/3798102.html