1. 程式人生 > >Oracle 11g R2 索引

Oracle 11g R2 索引

場景 相對 數據行 一個數 ado water 占用 鎖定 oracle

索引是oracle提供的一個對象,提供了一種快速訪問數據的途徑,提高了數據庫的檢索性能。索引使數據庫程序無需對整個表進行全表掃描,就可以在其中找到所需要的數據,就想書的目錄,可以通過他快速查找所需信息,無需閱讀整本書。

oracle的數據庫管理系統在訪問數據時使用以下3種訪問方法;
1.全表掃描

2.通過ROWID

3.使用索引

索引的分類:

1,B樹索引結構

索引的頂部為根,其中包含指向下一級索引的項。下一級為分支塊,分支塊又指向索引中下一級的塊,最低一級的塊稱為葉節點,其中包含指向表數據行的索引項。葉節點為雙向連接,有助於按關鍵字值得升序和降序掃描索引。

創建普通索引
創建普通索引的語法

create [unique] index 索引名稱 on 表名(列名)[tablespace表空間名稱]

[unique]用於指定唯一索引,默認情況下為非唯一索引

[tablespace]為索引指定表空間

練習環境
技術分享圖片
在雇員EMP表中,在雇員名稱列創建B樹索引,oracle創建的普通索引如果沒有說

明類型就是B樹索引
技術分享圖片
查看剛剛創將的索引 EMP_NAME_IDX
技術分享圖片
創建唯一索引和非唯一索引
唯一索引:保證定義索引的列中沒有任何重復值,唯一索引的索引關鍵字只能指向表中的一行。

非唯一索引:定義索引的列中可以有重復值

在薪水級別salgrade表中,為級別編號(grade)列創建唯一索引
技術分享圖片
反向鍵索引
與常規B樹索引相反,反向鍵索引在保持順序的同時,反轉索引列的字節。反向鍵索引通過反轉索引鍵的數據值,使得索引的修改平均分布到整個索引樹上,主要應用多個實例可同時訪問同一個數據庫的場景中。使用反向鍵索引將索引插入操作分散在多個索引塊鍵,如果使用B數索引的情況下,由於索引關鍵字在索引樹中的位置相近而處於同一個索引塊中,多個實例同時更新時會發生沖突,從而導致I/O訪問上的瓶頸。

語法如下:

CREATE index 索引名稱 on 表名(列名)REVERSE;
位圖索引
位圖索引適用於低基數的列,即該列的值是有限的幾個,例如雇員表中的工種(job)列,即便是幾百萬條雇員記錄,工種也是有限的。JOB列可以作為位圖索引

位圖索引的優點:

相對B樹索引而言,基於位圖索引列的查詢可以減少響應時間

相比其他索引技術,位圖索引占用空間有所減少

位圖索引不應當在頻繁發生INSERT,update,delete操作的表上使用,這是因為單個位圖索引項指向表的很多數據行,當修改索引項時需要將其指向的數據行全部鎖定,這會嚴重降低數據庫的並發處理能力。位圖索引適用於數據倉庫和決策支持系統中.

在雇員表(emp)表中,為工種(job)列創建位圖索引

技術分享圖片
在雇員表(emp)中,為雇員名稱(ename)列創建大寫函數索引

基於函數的索引
技術分享圖片
查看索引列相關的信息:索引名,表名,索引列
技術分享圖片
維護索引
重建索引:

索引需要維護,如果建立了索引的表中有大量的刪除和插入操作,會使得索引很大,因為刪除操作後,刪除值得索引空間不能被自動重新使用。對於大表和DML操作頻繁的表,索引的維護是很重要的。ORACLE提供了REBUILD指令來重建索引,使索引空間可以重用刪除值所占用的空間,使索引更加進奏。
技術分享圖片
在重建索引時,也可以修改索引的表空間
技術分享圖片
技術分享圖片
合並索引碎片

合並索引碎片可以釋放部分磁盤空間,是索引維護的一種重要方式,也是維護磁盤空間的方式
技術分享圖片
刪除索引

DROP INDEX語句刪除索引

刪除雇員表中的INDEX_BIT_JOB位圖索引
技術分享圖片
如果對此有興趣,請掃下面二維碼免費獲取更多詳情
技術分享圖片

Oracle 11g R2 索引