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