oracle之 反向鍵索引

2021-08-17 10:30:40 字數 679 閱讀 4365

反向鍵索引是一種b-tree索引,它在保持列順序的同時,物理地改變每個索引鍵的位元組(反向鍵索引除了rowid和still之外,反轉每個索引列的位元組)。例如,如果索引鍵為20,如果在十六進製制中儲存為這個鍵的兩個位元組是c1,則是標準b樹索引中的15個位元組,那麼乙個反向鍵索引將位元組儲存為15,c1。

在反向鍵索引中,位元組順序的反轉分布在索引中的所有葉鍵上。例如,在標準鍵索引中相鄰的20和21這樣的鍵現在被分開儲存在不同的塊中(索引會在左邊,中間,右邊-到處都是)。所以爭論就這樣消失了。因此,順序鍵插入的i/o分布更均勻。

缺點:但是,必須指出的是:現在整個索引最好在緩衝區快取中,而在之前——只有熱的右側需要在快取中進行有效的插入。如果索引不能放入快取,我們很可能會將緩衝區繁忙的等待變成物理io等待,這可能更糟(補救比症狀更糟糕)。

由於索引中的資料在儲存時沒有按列鍵排序,所以反向鍵安排在某些情況下消除了執行索引範圍掃瞄查詢的能力。例如,如果使用者對大於20的訂單id發出查詢,那麼資料庫就不能從包含該id的塊開始,然後水平地通過葉塊進行。

總結:這些索引旨在消除插入應用程式上的索引熱點。這些索引對於插入效能非常好,但是它們是有限的,因為資料庫不能使用它們進行索引範圍掃瞄。

語法:create index on (, )

reverse;

參考:what are reverse key indexes? (文件 id 1070627.6)

oracle之 反向鍵索引

反向鍵索引是一種b tree索引,它在保持列順序的同時,物理地改變每個索引鍵的位元組 反向鍵索引除了rowid和still之外,反轉每個索引列的位元組 例如,如果索引鍵為20,如果在十六進製制中儲存為這個鍵的兩個位元組是c1,則是標準b樹索引中的15個位元組,那麼乙個反向鍵索引將位元組儲存為15,c...

反向鍵索引

反向鍵索引指原來相連比較緊密的值,強制使其分散在相距比較遠的位置上。例如 11112 和 11113 雖然是連續的值,但是其反轉後卻變成了 21111 和 31111 這樣兩個值相差得比較遠了,從而達到了分散的目的。這樣做會使得索引中的順序和儲存的儲存順序之間存在很大差別,從而嚴重破壞聚簇因子。但這...

oracle反向索引

oracle反向索引 2013 05 07 13 52 20 0 收藏我要投稿 oracle反向索引 如 create index idx rev on tiger.test test name reverse 把索引表空間存放在能夠把檔案物理分割在多個磁碟上的磁碟體系結構上。資料以反轉鍵索引儲存,...