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.區域性索引一定是分割槽索引 分割槽鍵等同於表的分割槽鍵...