Oracle中索引的原理

2021-10-11 14:30:46 字數 1033 閱讀 7185

索引是一種資料庫結構,能夠就資料庫中的某列提供快速查詢,而不用檢索整個**(官方的不行)。

注意

1. b-tree索引(oracle預設的)

b 樹索引時 oracle 最常用的索引型別(也是預設型別),是以 b 樹結構組織並存放索引資料。預設情況下 b 樹索引中的資料是以公升序方式排列的。 b 樹索引是由根塊、分支塊和葉塊組成。

如上圖所示 就是對該字段建立索引時該字段的資料量很大且值差異性也大的時候 就排個序分個組,查詢時便於快速定位範圍。

語法

create index on ( , , … );

2. 位圖索引 / bitmap索引

當需建立索引列包含的取值太少時,如對性別列建立索引,取值只能是「男」或者「女」,使用 b 樹索引取出來的值任然太多,失去了索引的意義。這種情況需要使用位數索引。

bitmap主要用於選定的列中,屬性取值範圍比較小的,如為性別(male,female),衣服尺寸(s,m,l)等,而且在讀取比較多的系統中使用較多。

語法create bitmap index index_name on table_name (column_name);

3. 區別

b-tree索引適合屬性值取值範圍很大的,而bitmap索引適合於屬性值取值範圍小的。

(索引的更新注意需要重新啟動資料庫方可生效)

為表建立索引後,隨著對錶不斷進行更替、插入和刪除動作,索引中會產生越來越多的儲存碎片,導致索引工作效率降低。這是可以採取重建索引和合併索引清除碎片。合併索引只是將 b 樹中葉子節點的儲存碎片合併在一起,並不會改變索引的物流組織結構。

Oracle索引原理

乙個b樹索引只有乙個根節點,它實際就是位於樹的最頂端的分支節點。可以用下圖一來描述b樹索引的結構。其中,b表示分支節點,而l表示葉子節點。對於分支節點塊 包括根節點塊 來說,其所包含的索引條目都是按照順序排列的 預設是公升序排列,也可以在建立索引時指定為降序排列 每 個索引條目 也可以叫做每條記錄 ...

Oracle索引原理

乙個b樹索引只有乙個根節點,它實際就是位於樹的最頂端的分支節點。可以用下圖一來描述b樹索引的結構。其中,b表示分支節點,而l表示葉子節點。對於分支節點塊 包括根節點塊 來說,其所包含的索引條目都是按照順序排列的 預設是公升序排列,也可以在建立索引時指定為降序排列 每 個索引條目 也可以叫做每條記錄 ...

ORACLE 索引原理

乙個b樹索引只有乙個根節點,它實際就是位於樹的最頂端的分支節點。可以用下圖一來描述b樹索引的結構。其中,b表示分支節點,而l表示葉子節點。對於分支節點塊 包括根節點塊 來說,其所包含的索引條目都是按照順序排列的 預設是公升序排列,也可以在建立索引時指定為降序排列 每個索引條目 也可以叫做每條記錄 都...