oracle 索引詳解

2021-08-30 03:01:51 字數 1840 閱讀 6940

oracle的索引

索引和對應的表應該位於不同的表空間中,oracle能夠並行讀取位於不同硬碟上的資料,可以避免產生i/o衝突

b樹索引:在b樹的葉節點中儲存索引欄位的值與rowid。

唯一索引和不唯一索引都只是針對b樹索引而言.

oracle最多允許包含32個字段的復合索引

索引建立策略

1.匯入資料後再建立索引

2.不需要為很小的表建立索引

3.對於取值範圍很小的字段(比如性別字段)應當建立位圖索引

4.限制表中的索引的數目

5.為索引設定合適的pctfree值

6.儲存索引的表空間最好單獨設定

建立不唯一索引

create index emp_ename on employees(ename)

tablespace users

storage(......)

pctfree 0;

建立唯一索引

create unique index emp_email on employees(email)

tablespace users;

建立位圖索引

create bitmap index emp_*** on employees(***)

tablespace users;

建立反序索引

create unique index order_reinx on orders(order_num,order_date)

tablespace users

reverse;

建立函式索引(函式索引即可以是普通的b樹索引,也可以是點陣圖索引)

create index emp_substr_empno

on employees(substr(empno,1,2))

tablespace users;

修改索引儲存引數(與表類似,initial和minextents引數在索引建立以後不能再改變)

alter index emp_ename storage(pctincrease 50);

由於定義約束時由oracle自動建立的索引通常是不知道名稱的,對這類索引的修改經常是利用alter table ..using index語句進行的,而不是alter index語句

利用下面的語句將employees表中primary key約束對應的索引的pctfree引數修改為5

alter table employees enable primary key using index pctfree 5;

清理索引碎片

1.合併索引(只是簡單的將b樹葉結點中的儲存碎片合併在一起,並不會改變索引的物理組織結構)

alter index emp_pk coalesce;

2.重建索引(不僅能夠消除儲存碎片,還可以改變索引的全部儲存引數設定,並且可以將索引移動到其它的表空間中,重建索引

實際上就是再指定的表空間中重新建立乙個新的索引,然後刪除原來的索引)

alter index emp_pk rebuild;

刪除索引

drop index emp_ename;

如果索引中包含損壞的資料塊,或者包含過多的儲存碎片,需要首先刪除這個索引,然後再重建它.

如果索引是在建立約束時由oracle自動產生的,可以通過禁用約束或刪除約束的方法來刪除對應的索引.

在刪除乙個表時,oracle會自動刪除所有與該錶相關的索引.

索引資料字典

all_indexes/dba_indexes/user_indexes 索引的基本資訊

all_ind_columns/dba_ind_columns/user_ind_columns 索引對應的字段資訊

Oracle 分割槽索引詳解

oracle 分割槽索引詳解 table index create unique bitmap index schema.index name on schema.table name tbl alias col asc desc index clauseindex attribs index cl...

oracle虛擬索引詳解

dba在日常維護管理資料庫進行低效能sql分析時,有時候需要通過建立索引對sql進行優化,但有些時候我們建立的索引是否能用到?這個只能建立以後才能看出效果,但是在實際工作中,特別是對大表建立索引對系統效能有很大影響,因此我們不得不避開業務高峰時段,但是有沒有一種辦法建立索引而不影響效能呢?有,虛擬索...

深入oracle分割槽索引的詳解

表可以按range hash list分割槽,表分割槽後,其上的索引和普通表上的索引有所不同,oracle對於分割槽表上的索引分為2類,即 區域性索引和全域性索引 下面分別對這2種索引的特點和侷限性做個總結。區域性索引local index 1.區域性索引一定是分割槽索引 分割槽鍵等同於表的分割槽鍵...