1. 程式人生 > >Oracle 資料庫 各種索引型別 簡單介紹

Oracle 資料庫 各種索引型別 簡單介紹

各種Oracle索引型別介紹

邏輯上:
Single column 單行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Function-based函式索引
Domain 域索引
 
物理上:
Partitioned 分割槽索引
NonPartitioned 非分割槽索引
B-tree:
Normal 正常型B樹
Rever Key 反轉型B樹 
Bitmap 點陣圖索引
 
索引結構:
B-tree:
適合與大量的增、刪、改(OLTP);
不能用包含OR操作符的查詢;
適合高基數的列(唯一值多)
典型的樹狀結構;
每個結點都是資料塊;
大多都是物理上一層、兩層或三層不定,邏輯上三層;
葉子塊資料是排序的,從左向右遞增;
在分支塊和根塊中放的是索引的範圍;
Bitmap:
適合與決策支援系統;
做UPDATE代價非常高;
非常適合OR操作符的查詢; 
基數比較少的時候才能建點陣圖索引;
 
樹型結構:
索引頭 
開始ROWID,結束ROWID(先列出索引的最大範圍)
BITMAP
每一個BIT對應著一個ROWID,它的值是1還是0,如果是1,表示著BIT對應的ROWID有值


1. b-tree索引
Oracle資料庫中最常見的索引型別是b-tree索引,也就是B-樹索引,以其同名的計算科學結構命名。CREATE 
INDEX語句時,預設就是在建立b-tree索引。沒有特別規定可用於任何情況。
2. 點陣圖索引(bitmap index)
點陣圖索引特定於該列只有幾個列舉值的情況,比如性別欄位,標示欄位比如只有0和1的情況。
3. 基於函式的索引
比如經常對某個欄位做查詢的時候是帶函式操作的,那麼此時建一個函式索引就有價值了。
4. 分割槽索引和全域性索引
這2個是用於分割槽表的時候。前者是分割槽內索引,後者是全表索引
5. 反向索引(REVERSE)
這個索引不常見,但是特定情況特別有效,比如一個varchar(5)位欄位(員工編號)含值
(10001,10002,10033,10005,10016..)
這種情況預設索引分佈過於密集,不能利用好伺服器的並行
但是反向之後10001,20001,33001,50001,61001就有了一個很好的分佈,能高效的利用好並行運算。
6.HASH索引
HASH索引可能是訪問資料庫中資料的最快方法,但它也有自身的缺點。叢集鍵上不同值的數目必須在建立HASH叢集之前就要知道。需要在建立HASH叢集的時候指定這個值。使用HASH索引必須要使用HASH叢集。

分類: sql+資料庫效能優化,sql語句+資料庫,區別對比

https://www.cnblogs.com/langtianya/p/6655050.html