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

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

當(dāng)我們?cè)谀潮緯胁檎姨囟ǖ恼鹿?jié)內(nèi)容時(shí),可以先從書的目錄著手,找到該章節(jié)所在的頁(yè)碼,然后快速的定位到該頁(yè)。這種做法的前提是頁(yè)面編號(hào)是有序的。如果頁(yè)碼無(wú)序,就只能從第一頁(yè)開(kāi)始,一頁(yè)頁(yè)的查找了。

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

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

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

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

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

CREATE [UNIQUE] INDEX index_name ON?

table_name(column_name[,column_name…])

語(yǔ)法解析:

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

2. index_name:指定索引名。

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

4. column_name:指定要對(duì)哪個(gè)列創(chuàng)建索引。我們也可以對(duì)多列創(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的小寫作為條件的表達(dá)式,因此創(chuàng)建索引時(shí),可以先對(duì)JOB列中的所有值轉(zhuǎn)換為小寫后創(chuàng)建索引,而這時(shí)需要使用lower函數(shù),這種索引稱為基于函數(shù)的索引。

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

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