Oracle索引(Index)創建使用


Oracle對象教程:索引(Index)創建使用,索引:對數據庫表中的某些列進行排序,便於提高查詢效率。

當我們在某本書中查找特定的章節內容時,可以先從書的目錄着手,找到該章節所在的頁碼,然后快速的定位到該頁。這種做法的前提是頁面編號是有序的。如果頁碼無序,就只能從第一頁開始,一頁頁的查找了。

數據庫中索引(Index)的概念與目錄的概念非常類似。如果某列出現在查詢的條件中,而該列的數據是無序的,查詢時只能從第一行開始一行一行的匹配。創建索引就是對某些特定列中的數據排序,生成獨立的索引表。在某列上創建索引后,如果該列出現在查詢條件中,Oracle會自動的引用該索引,先從索引表中查詢出符合條件記錄的ROWID,由於ROWID是記錄的物理地址,因此可以根據ROWID快速的定位到具體的記錄,表中的數據非常多時,引用索引帶來的查詢效率非常可觀。

·如果表中的某些字段經常被查詢並作為查詢的條件出現時,就應該考慮為該列創建索引。

·當從很多行的表中查詢少數行時,也要考慮創建索引。有一條基本的准則是:當任何單個查詢要檢索的行少於或者等於整個表行數的10%時,索引就非常有用。

Oracle數據庫會為表的主鍵和包含唯一約束的列自動創建索引。索引可以提高查詢的效率,但是在數據增刪改時需要更新索引,因此索引對增刪改時會有負面影響。

語法結構:創建索引

CREATE [UNIQUE] INDEX index_name ON table_name(column_name[,column_name…])

語法解析:

1. UNIQUE:指定索引列上的值必須是唯一的。稱為唯一索引。

2. index_name:指定索引名。

3. tabl_name:指定要為哪個表創建索引。

4. column_name:指定要對哪個列創建索引。我們也可以對多列創建索引;這種索引稱為組合索引。

案例4:為EMP表的ENAME列創建創建唯一索引,為EMP表的工資列創建普通索引,把JOB列先變為小寫再創建索引。

代碼演示:創建索引

SQL> CREATE UNIQUE INDEX UQ_ENAME_IDX ON EMP(ENAME);  ①

Index created

SQL> CREATE INDEX IDX_SAL ON EMP(SAL);  ②

Index created

SQL> CREATE INDEX IDX_JOB_LOWER ON EMP(LOWER(JOB));  ③

Index created

代碼解析:

① 為SCOTT.EMP表的ENAME列創建唯一索引。

② 為SCOTT.EMP表的SAL列創建索引。

③ 在查詢中可能經常使用job的小寫作為條件的表達式,因此創建索引時,可以先對JOB列中的所有值轉換為小寫后創建索引,而這時需要使用lower函數,這種索引稱為基於函數的索引。

在select語句查詢時,Oracle系統會自動為查詢條件上的列應用索引。索引就是對某一列進行排序,因此在索引列上,重復值越少,索引的效果越明顯。

Oracle可以為一些列值重復非常多且值有限的列(比如性別列)上創建位圖索引。關於Oracle更多的索引類型(比如反向鍵索引等),請參考Oracle官方文檔。

來源:CUUG官網


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM