您好,登錄后才能下訂單哦!
索引是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位圖索引
如果對此有興趣,請掃下面二維碼免費獲取更多詳情
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。