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

我举个 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 索引

 

 

你可能感兴趣的:(什么情况下使用全局索引和本地索引)