天天看點

什麼情況下使用全局索引和本地索引

我舉個 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