Oracle索引總結

2021-10-01 21:38:53 字數 1140 閱讀 9254

oracle索引分為普通索引(b樹索引)、唯一索引(b樹索引)、位圖索引和全文索引(比較少用,此文不作介紹)。

1、普通索引

普通索引的唯一任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件(where column = )或排序條件(order by column)中

的資料列建立索引。只要有可能,就應該選擇乙個資料最整齊、最緊湊的資料列(如乙個整數型別的資料列)來建立索引。

建立語句:create index  索引名  on 表名(列明);

2、唯一索引

普通索引允許被索引的資料列包含重複的值。比如說,因為人有可能同名,所以同乙個姓名在同乙個「員工個人資料」資料表裡可能出現兩次或更多次。

如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該用關鍵字unique把它定義為乙個唯一索引。這麼做的好處:一是簡化了mysql對這個索引的管理工作,這個索引也因此而變得更有效率;二是mysql會在有新記錄插入資料表時,自動檢查新記錄的這個欄位的值是否已經在某個記錄的這個欄位裡出現過了;如果是,mysql將拒絕插入那條新記錄。也就是說,唯一索引可以保證資料記錄的唯一性。事實上,在許多場合,人們建立唯一索引的目的往往不是為了提高訪問速度,而只是為了避免資料出現重複。

建立語句:create unique index  索引名  on 表名(列明);

3、位圖索引

對於性別,可取值的範圍只有'男','女',並且男和女可能各站該錶的50%的資料,這時新增b樹索引還是需要取出一半的資料, 因此完全沒有必要。相反,如果某個欄位的取值範圍很廣,幾乎沒有重複,比如身份證號,此時使用b樹索引較為合適。事實上,當取出的行資料占用表中大部分(超過20%)的資料時,即使新增了b樹索引,資料庫如oracle、mysql也不會使用b樹索引,很有可能還是一行行全部掃瞄(b樹索引失效,全表掃瞄)。此時就要用到位圖索引。

建立語句:create bitmap index  索引名  on 表名(列明);

優缺點:

檢視索引執行計畫

先執行 explain plan for

例子:explain plan for  select name from test_table  where name= 'pdy71184x'

再執行 select * from table(dbms_xplan.display)

ORACLE索引總結

分類 oracle技術 2006 10 23 23 19 3595人閱讀 收藏 舉報 oracle statistics null insert 優化table一 b 樹索引0.b樹索引中不存在非唯一的條目。1 在非唯一索引中,oracle會把rowid作為乙個額外的列追加到鍵上,使得鍵唯一。exp...

oracle 索引使用及索引失效總結

容易引起oracle索引失效的原因很多 1 在索引列上使用函式。如substr,decode,instr等,對索引列進行運算.需要建立函式索引就可以解決了。2 新建的表還沒來得及生成統計資訊,分析一下就好了 3 基於cost的成本分析,訪問的表過小,使用全表掃瞄的消耗小於使用索引。4 使用 not ...

oracle 索引使用及索引失效總結

容易引起oracle索引失效的原因很多 1 在索引列上使用函式。如substr,decode,instr等,對索引列進行運算.需要建立函式索引就可以解決了。2 新建的表還沒來得及生成統計資訊,分析一下就好了 3 基於cost的成本分析,訪問的表過小,使用全表掃瞄的消耗小於使用索引。4 使用 not ...