Oracle索引(Index)創(chuàng)建使用

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

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

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

·如果表中的某些字段經(jīng)常被查詢并作為查詢的條件出現(xiàn)時,就應(yīng)該考慮為該列創(chuàng)建索引。

·當(dāng)從很多行的表中查詢少數(shù)行時,也要考慮創(chuàng)建索引。有一條基本的準(zhǔn)則是:當(dāng)任何單個查詢要檢索的行少于或者等于整個表行數(shù)的10%時,索引就非常有用。

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

語法結(jié)構(gòu):創(chuàng)建索引

CREATE [UNIQUE] INDEX index_name ON?

table_name(column_name[,column_name…])

語法解析:

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

2. index_name:指定索引名。

3. tabl_name:指定要為哪個表創(chuàng)建索引。

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

案例4:為EMP表的ENAME列創(chuàng)建創(chuàng)建唯一索引,為EMP表的工資列創(chuàng)建普通索引,把JOB列先變?yōu)樾懺賱?chuàng)建索引。

代碼演示:創(chuàng)建索引

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列創(chuàng)建唯一索引。

② 為SCOTT.EMP表的SAL列創(chuàng)建索引。

③ 在查詢中可能經(jīng)常使用job的小寫作為條件的表達式,因此創(chuàng)建索引時,可以先對JOB列中的所有值轉(zhuǎn)換為小寫后創(chuàng)建索引,而這時需要使用lower函數(shù),這種索引稱為基于函數(shù)的索引。

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.簡介 數(shù)據(jù)存儲有哪些方式?電子表格,紙質(zhì)文件,數(shù)據(jù)庫。 那么究竟什么是關(guān)系型數(shù)據(jù)庫? 目前對數(shù)據(jù)庫的分類主要是...
    喬震閱讀 2,023評論 0 2
  • mysql數(shù)據(jù)庫中 :database : 文件夾table : 數(shù)據(jù)表(數(shù)據(jù)文件) 進入mysqlmysql -...
    賦閑閱讀 640評論 0 0
  • 1.偽表,偽列 1.1.偽表dual 概念:就是一個不真實存在的虛擬表.偽表的作用就是用來構(gòu)造一個符合sql規(guī)則的...
    隨手點燈閱讀 1,324評論 1 7
  • 2016年11月 你出生了! 11月15日——預(yù)產(chǎn)期當(dāng)天,和你哥一樣準(zhǔn)時。 早半個月就常常有宮縮反應(yīng),麻麻以為你要...
    疼福媽閱讀 214評論 0 0
  • 致一個要去遠方的姑娘 蘇曉曼: 想必這個時候,你已收到了錄取通知書。不知道你在怨我,還是心...
    五姐閱讀 584評論 2 3

友情鏈接更多精彩內(nèi)容