Oracle 11g R2 索引

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

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

2.通過ROWID

3.使用索引

索引的分類:

1,B樹索引結構

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

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

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

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

[tablespace]爲索引指定表空間

練習環境
Oracle 11g R2 索引
在僱員EMP表中,在僱員名稱列創建B樹索引,oracle創建的普通索引如果沒有說

明類型就是B樹索引
Oracle 11g R2 索引
查看剛剛創將的索引 EMP_NAME_IDX
Oracle 11g R2 索引
創建唯一索引和非唯一索引
唯一索引:保證定義索引的列中沒有任何重複值,唯一索引的索引關鍵字只能指向表中的一行。

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

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

語法如下:

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

位圖索引的優點:

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

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

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

在僱員表(emp)表中,爲工種(job)列創建位圖索引
Oracle 11g R2 索引
在僱員表(emp)中,爲僱員名稱(ename)列創建大寫函數索引

基於函數的索引
Oracle 11g R2 索引
查看索引列相關的信息:索引名,表名,索引列
Oracle 11g R2 索引
維護索引
重建索引:

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

合併索引碎片可以釋放部分磁盤空間,是索引維護的一種重要方式,也是維護磁盤空間的方式
Oracle 11g R2 索引
刪除索引

DROP INDEX語句刪除索引

刪除僱員表中的INDEX_BIT_JOB位圖索引
Oracle 11g R2 索引
如果對此有興趣,請掃下面二維碼免費獲取更多詳情
Oracle 11g R2 索引

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章