oracle索引分類

chuanzhongdu1發表於2011-10-17

B-TREE INDEX,B樹索引:在建立索引時他是預設的索引型別,B樹索引可以使單一列(簡單)的索引,也可以是多個列(組合/複合)的索引。最多可以包括32列。適合:1,訪問表中佔很小比例的行,這樣就可以使用索引快速定位。 2,根本不訪問表,所需查詢的資料全部在索引中,比如查詢的列就是索引,這樣直接訪問索引就可以得到結果。,多使用在OLTP系統中。

Create index index_test01 on test01(id);


BITMAP-INDEX,點陣圖索引:是在列的值重複的非常多的情況下使用。當大多數條目比不會向點陣圖新增新的值時,點陣圖索引在載入表時比B樹索引做的好。由於點陣圖索引最大的用處就是當列值有很多重複的時候,所以他不能被宣告成唯一索引。當使用alter table修改有點陣圖索引的列的時候,點陣圖索引失效,需重建索引。點陣圖索引裡是101010這類的,所以是不包含任何列資料的。

CREATE BITMAP INDEX index_name ON normal_index_creation_clause;


反轉建索引:當載入一些有序索引的時候,索引集中分佈,如果資料使用的索引集中在一個資料塊則會發生爭用,這是可以將索引反轉,reverse。

hash索引:使用hash索引必須使用hash叢集。建立cluster的同時也建立了hash索引。

建立反序索引

createindex idx_reverse on customer(col1,col2) reverse;

修改indexreverseindex

alterindex index_name rebuild reverse;


function index ,基於函式的索引:當查詢的列上使用了函式之後就不能使用原來的索引了,但是可以建立函式索引,使建立在函式上的索引可以使用。在優化器中,必須將引數QUERY_REWRITE_ENABLED設為true。

Create index index_fun_test05 on test05(substr(id,1,1)

分割槽索引:本地分割槽索引,全域性分割槽索引。

本地分割槽索引:可以使用與表相同的分割槽鍵和範圍界限來對本地索引分割槽。每個本地索引的分割槽只包含了他所關聯的表分割槽的鍵和rowid。本地分割槽索引又分為有字首索引和無字首索引。有字首索引:包含了來自分割槽鍵的鍵,並把它們作為索引的前導,相當於索引的分割槽都使用表相同範圍的界限來建立的。沒有包含在where子句中的值的分割槽是不會被訪問到的,這樣也提高了子句的效能。  無字尾索引:可以在表的任何一列建立無字首的索引,但是索引的每個分割槽只包含表的相應分割槽的兼職。

全域性分割槽索引是在一個索引分割槽包含來自多個表分割槽的鍵。在建立全域性分割槽索引的時候,必須定義分割槽鍵的範圍。只能是B樹索引。如果一個分割槽被擷取,增加,分割,刪除等,就必須重建索引。全域性有字首索引沒經過對等分割槽。

索引聚簇表

聚簇是指:如果一組表有一些共同的列,則將這樣一組表儲存在相同的資料庫塊中;聚簇還表示把相關的資料儲存在同一個塊上。利用聚簇,一個塊可能包含多個表的資料。概念上就是如果兩個或多個表經常做連結操作,那麼可以把需要的資料預先儲存在一起

  1. create table dept( deptno number(2) primary key, 3 dname varchar2(14),loc varchar2(13))  
  2. cluster emp_dept_cluster(deptno);

  1. create table emp( empno number primary key,ename varchar2(10),job varchar2(9),mgr number,hiredate date,sal number,comm number,  
  2. deptno number(2) constraint emp_fk references dept(deptno))  
  3. cluster emp_dept_cluster(deptno);

相關文章