Oracle 索 引 的 分 類 :使用特殊索引的注意事項
阿新 • • 發佈:2019-02-10
在ORACLE裡除了我們常用的B樹索引外,還有一些特殊索引能被使用。
如:倒序索引,位對映索引,函式索引等。
我根據自己的體會,列一個注意事項:
倒序索引:
ORACLE DOC上說倒序索引比較適合於序列號產生的欄位,如唯一編號。
但是這樣的索引對於範圍的比較,如 > < between ... and ... 等操作是不起作用的;
只對 = in 等操作才會呼叫索引。
所以一般的自動增長的PK欄位還是用常規B樹索引好一些。
位對映索引:
適合於唯一記錄數較少,DML操作較少的欄位。如歷史資料表裡的類別欄位。
它可以減少索引儲存空間的佔用,並提高訪問速度。
最好在查詢時加提示/*+ first_rows */ 或者 /*+ index(表名 索引名)*/ 確認使用位對映索引。
函式索引:
需要修改資料庫裡面兩個動態引數:
QUERY_REWRITE_ENABLED=TRUE
QUERY_REWRITE_INTEGRITY=TRUSTED
函式索引才會在有提示/*+ first_rows */ 或者 /*+ index(表名 索引名)*/ 時被使用。
如:倒序索引,位對映索引,函式索引等。
我根據自己的體會,列一個注意事項:
倒序索引:
ORACLE DOC上說倒序索引比較適合於序列號產生的欄位,如唯一編號。
但是這樣的索引對於範圍的比較,如 > < between ... and ... 等操作是不起作用的;
只對 = in 等操作才會呼叫索引。
所以一般的自動增長的PK欄位還是用常規B樹索引好一些。
位對映索引:
適合於唯一記錄數較少,DML操作較少的欄位。如歷史資料表裡的類別欄位。
它可以減少索引儲存空間的佔用,並提高訪問速度。
最好在查詢時加提示/*+ first_rows */ 或者 /*+ index(表名 索引名)*/ 確認使用位對映索引。
函式索引:
需要修改資料庫裡面兩個動態引數:
QUERY_REWRITE_ENABLED=TRUE
QUERY_REWRITE_INTEGRITY=TRUSTED
函式索引才會在有提示/*+ first_rows */ 或者 /*+ index(表名 索引名)*/ 時被使用。