oracle中的索引非常多,也非常複雜,但是對於oracle的開發人員和系統管理員來說,索引至關重要,因為使用了恰當的索引,將會大大提高資料庫的訪問效能,否則就有可能使系統處於泥潭當中,不能自拔。這篇文章只是自己的總結,不可能對oracle當中的所有索引都進行剖析(也沒有這個能力^_^),希望能對你有所幫助。
1. 什麼是索引?為什麼要引用索引?
對於查詢操作,oracle的任務是根據使用者提供的查詢條件盡快地查詢到乙個目的rowid集合,oracle根據這個rowid集合獲取最終的記錄結果集,並返回給使用者。由於查詢操作是資料庫系統發生最頻繁的動作之一,因此如何提高查詢效能就顯得很重要。
為了提高查詢效能,資料庫系統中引入乙個索引的概念,所謂索引就是根據表記錄中的乙個或多個列,通過一定的運算規則,將這些列的特徵表示為乙個數值或字串。資料庫系統將這些數值或字串加上與之相關的記錄rowid用一定的資料結構儲存起來。這樣當資料庫接收到乙個查詢請求時,根據查詢的條件,選擇乙個在此表上的索引(具體的選擇過程是資料庫的sql優化器來做的),根據這個索引的運算規則,計算出對應的索引值,從而可以快速地找到對應的記錄rowid。
2. 在oracle系統索引是如何儲存的?
對於oracle系統,基本的儲存單位是資料塊,索引也是儲存在資料塊中的,用來儲存索引的資料塊,我們稱之為索引塊。對於索引段的空間管理和一般的資料段時一樣的。所不同的是,在索引塊中用於儲存索引的空間是:資料塊的空間 - 資料塊的管理開銷 - 索引條目管理開銷 - 索引長度開銷(1位元組).
在一種提到了資料庫會將索引以一定的資料結構儲存起來,這樣做的目的是為了更快地查詢到索引。在oracle系統索引是以平衡樹的結構進行儲存的,這樣可以大大減少查詢索引的時間,大概是log(n),而不用這個結構時,則是n/2。
對於使用平衡樹儲存的索引,有兩個術語:葉塊和分支塊。其中葉塊包含了鍵值-rowid資料對。
3. 如何對索引進行壓縮?
在oracle系統中索引是按平衡樹的結構進行儲存的,觀察這個結構當中的葉塊就會發現,鍵值部分的字首有可能是相同的,這樣我們把不同葉塊的相同的鍵值字首儲存乙份讓這些葉塊進行共享,這樣就可以減少儲存空間了,這就是對索引的壓縮。這種壓縮過程是對鍵值的壓縮,所以又稱為鍵壓縮。更具體一點,乙個鍵包含兩個部分:分組片斷和唯一片斷,這樣壓縮的過程就是只保留乙份分組片斷。
4. oracle系統中索引的分類?
在oracle系統中,索引被分為兩大類:唯一索引和非唯一索引,他們在平衡樹結構中的葉塊儲存的資訊是不一樣的。對於唯一索引,乙個鍵值對應乙個rowid;對於非唯一索引,乙個鍵值可能對應多個rowid。
Oracle 資料庫中的索引
在oracle資料庫中的資料,每一行都是用rowid來標識的,rowid能夠標識資料庫中的某一行的具體位置,在資料庫中存有大量資料時,要能找找到具體的某乙個資料 rowid 這個時候就需要索引物件。1 索引的工作原理 在乙個擁有大量資料的表中進行查詢時,如果沒有建立索引,肯定會全表查詢,然後再將查詢...
Oracle資料庫索引
標籤 資料庫 oracle 索引index 2013 06 14 16 54 4148人閱讀收藏 舉報 database 6 目錄 索引基本概念 索引的作用 索引的架構 oracle索引的型別 1 基於函式的索引 2 位圖索引 oracle索引的實現 索引是用於加速資料訪問的資料物件,合理的使用索引...
Oracle資料庫 索引
索引通過指標的形式提高資料查詢的速度。如果乙個資料量比較大的資料庫經常被查詢而插入刪除的次數較少,則應該建立索引,相反,小表或經常被插入或修改,則不建議建立索引。1.建立索引 create index emp phone number ix on employees phone number 2.建...