Oracle 索引梳理

什麼是索引?

索引就相當於目錄,按目錄查找會加快速度。
目錄按一定規則排序,例如區間查找(按日期檢索):只需要查找開始的最小值,和結尾的最大值。其它的結果在區間之中,而無需再全盤掃描(如果不排序,誰也不知道區間值會出現在哪裏)。

索引的數據結構

垂直方向是B樹,在水平方向是雙向鏈表
可以從索引的數據結構觀察出索引的分段查找
BTree (blance tree)與二叉樹(Binary Tree)不同之處在於無論檢索哪條數據, BTree的檢索層數都是一樣的。
在這裏插入圖片描述

索引的分類

1.B*Tree索引 (默認索引,保存經過排序過的索引列和對應的rowid值)
唯一索引
反向鍵索引:避免相鄰的數據存儲在一個數據塊中,引起多個實例訪問時的等待。
降序索引:select * from t order by id asc,time desc
create index desc_t_idx on t (id asc,time desc);
檢索過程中無排序步驟,提高效率。
聚簇索引:
列基數大時適合使用B樹索引
2.位圖索引
基數小的列適合簡歷位圖索引(例如性別等枚舉字段)
3.組合索引:適用於多個篩選條件 如:where id>10,score>60
4.基於函數的索引
當經常要訪問一些函數或者表達式時,可以將其存儲在索引中,這樣下次訪問時,該值已經計算出來了,可以加快查詢速度
函數索引既可以使用B數索引,也可以使用位圖索引;當函數結果不確定時採用B樹索引,結果是固定的某幾個值時使用位圖索引
函數索引中可以用len、trim、substr、upper(每行返回獨立結果),不能使用如sum、max、min、avg等分組函數

1.聚集索引
目錄的順序等同正文的順序。查詢結果排序,分段。按索引查找的值在正文的一個連續的段中。
特點:查詢結果如果在該分段中沒有,其它地方也不會有。
每個表只能有一個聚集索引(目錄只能按照一種方法排序)
優點:區間查找效率高。例如查詢某一段的時間,只需檢索出開頭結尾數據即可(其它數據在二者之間)
2.非聚集索引
目錄的順序不等同正文的順序。查詢結果不排序。
特點:散亂分佈在整個正文中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章