程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 6.1(續)索引、索引組織表--Oracle模式對象,6.1--oracle

6.1(續)索引、索引組織表--Oracle模式對象,6.1--oracle

編輯:Oracle教程

6.1(續)索引、索引組織表--Oracle模式對象,6.1--oracle


索引的基本概念:

(1).要理解索引,可以把書作為一個模型類比。一本書裡的內容,相當於一張大表存儲的數據,而書前面的目錄就相當於這個表的索引;

(2).索引可以擁有獨立的存儲磁盤空間;

(3).索引占用的磁盤空間要比表小的多,其主要作用是為了加快對數據的搜索速度;

(4).同時可以保證數據的唯一性。

 

索引的類型:可分為B樹索引(B-Tree)位圖索引(bitmap)反向鍵索引(reverse)基於函數的索引

 

B樹索引(B-Tree):

樹形結構,每個葉子節點中都包括索引列的值和記錄行對應的物理地址ROWID(鍵值ROWID值);

采用B樹索引可以確保無論索引條目位於何處,Oracle都需要花費相同的I/O就可以獲取它。

--例如:1001 rowid

--創建普通索引

create index employee_ix_ename on employee(ename);

--創建唯一索引

create unique index employee_UQ_eid on employee(eid);

--創建符合索引

create index employee_ix_ns on employ(ename,esex);

 

--注意:符合索引中的列,通常將在查詢語句的where子句中經常使用的列放在前面。

 

位圖索引(bitmap):

基數較小,且基數相對穩定的列建立索引時,首先考慮位圖索引;

--例如:“性別”列的取值一般只有男、女,類似這樣的列基數穩定且較小。

create bitmap employee_ix_esex on employ(esex);

 

反向鍵索引(reverse):

也叫翻轉索引,是一種特殊的B樹索引,適用於在含有序列數的列上創建。

--例如:索引鍵為2009,反向鍵索引將其翻轉成9002.

create index employee_ix_eid on employee(eid) reverse;

 

基於函數的索引:

常用與UPPER、LOWER、TO_CHAR(date)等函數分類上

--創建基於to_char()的函數索引

create index employee_ix_func on employee(to_char(edate,'yyyy-mm-dd'));

 

管理索引:合並、重建、監視、刪除

隨著表不斷更新,插入、更新數據,表的索引會產生越來越多的存儲碎片,這會影響索引的使用效率。

--合並索引,釋放空間

alter index employee_ix_ename coalesce deallocate unused;

 

--重建索引,實際上是在表空間中重新建立一個新的索引,然後刪除原來的索引

alter index employee_ix_ename rebuild;

 

--監視索引,打開索引的監視狀態後,可查看V$object_usage

----打開

alter index employee_ix_ename monitoring usage;

----關閉

alter index employee_ix_ename nomonitoring usage;

 

--刪除索引

Drop index employee_ix_ename;

 

 

索引組織表(Index Organized Table,IOT):

不像普通的表直接采用堆組織方式將記錄無序地存放在數據段中;

而采用類似B樹索引的索引組織方式將記錄按照某個鍵列進行排序後,再以B樹方式存在數據段中。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved