Oracle 索引概述

2022-01-19 09:31:43 字數 2181 閱讀 9733

oracle 提供了多種不同型別的索引以供使用。簡單地說,oracle 中包括如下索引:

b*樹索引:這些是我所說的「傳統「索引。到目前為止,這是 oracle 和大多數其他資料庫中最常用

的索引。b*樹的構造類似於二叉樹,能根據鍵提供一行或乙個行集的快速訪問,通常只需很少的讀操作就

能找到正確的行。不過,需要注意重要的一點,」b*樹「中的」b「不代表二叉(binary),而 代 表 平 衡( balanced)。

b*樹索引並不是一顆二叉樹,這一點在介紹如何在磁碟上物理地儲存 b*樹時就會了解到。b*樹索引有以下

子型別:

索引組織表(index organized table):索引組織表以 b*樹結構儲存。堆表的資料行是以一種無組

織的方式儲存的(只要有可用的空間,就可以放資料),而 iot 與之不同,iot 中的資料要按主鍵的順序存

儲和排序。對應用來說,iot 表現得與「常規「表並無二致;需要使用 sql 來正確地訪問 iot。iot 對資訊

獲取、空間系統和 olap 應用最為有用。iot 在上一章已經詳細地討論過。

b*樹聚簇索引(b*tree cluster index)這些是傳統 b*樹索引的乙個變體(只是稍有變化)。b*樹聚

簇索引用於對聚簇鍵建立索引(見第 11.章中「索引聚簇表「一節),所以這一章不再討論。在傳統 b*樹中 ,

鍵都指向一行;而 b*樹聚簇不同,乙個聚簇鍵會指向乙個塊,其中包含與這個聚簇鍵相關的多行。

降序索引(descending index):降序索引允許資料在索引結構中按「從大到小「的順序(降序)排

序,而不是按」從小到大「的順序(公升序)排序。我們會解釋為什麼降序索引很重要,並說明降序索引如

何工作。

反向鍵索引(reverse key index):這也是 b*樹索引,只不過鍵中的位元組會「反轉「。利用反向鍵

索引,如果索引中填充的是遞增的值,索引條目在索引中可以得到更均勻的分布。例如,如果使用乙個序

列來生成主鍵,這個序列將生成諸如 987500、987501、987502 等值。這些值是順序的,所以倘若使用乙個

傳統的 b*樹索引,這些值就可能放在同乙個右側塊上,這就加劇了對這一塊的競爭。利用反向鍵,oracle

則會邏輯地對 205789、105789、005789 等建立索引。oracle 將資料放在索引中之前,將先把所儲存資料

的位元組反轉,這樣原來可能在索引中相鄰放置的值在位元組反轉之後就會相距很遠。通過反轉位元組,對索引

的插入就會分布到多個塊上。

位圖索引(bitmap index):在一顆 b*樹中,通常索引條目和行之間存在一種一對一的關係:乙個索

引條目就指向一行。而對於位圖索引,乙個索引條目則使用乙個位圖同時指向多行。位圖索引適用於高度

重複而且通常唯讀的資料(高度重複是指相對於表中的總行數,資料只有很少的幾個不同值)。考慮在乙個

有 100 萬行的表中,每個列只有 3 個可取值:y、n 和 null。舉例來說,如果你需要頻繁地統計多少行有值

y,這就很適合建立位圖索引。不過並不是說如果這個表中某一列有 11.000 個不同的值就不能建立點陣圖索

引,這一列當然也可以建立位圖索引。在乙個 oltp 資料庫中,由於存在併發性相關的問題,所以不能考慮

使用位圖索引(後面我們就會討論這一點)。注意,位圖索引要求使用 oracle 企業版或個人版。

位圖聯結索引(bitmap join index):這為索引結構(而不是表)中的資料提供了一種逆規範化的方

法。例如,請考慮簡單的 emp 和 dept 表。有人可能會問這樣乙個問題:「多少人在位於波士頓的部門工作?

「emp 有乙個指向 dept 的外來鍵,要想統計 loc 值為 boston 的部門中的員工人數,通常必須完成表聯結,

將 loc 列聯結至 emp 記錄來回答這個問題。通過使用位圖聯結索引,則可以在 emp 表上對 loc 列建立索引。

基於函式的索引(function-based index):這些就是 b*樹索引或位圖索引,它將乙個函式計算得到

的結果儲存在行的列中,而不是儲存列資料本身。可以把基於函式的索引看作乙個虛擬列(或派生列)上

的索引,換句話說,這個列並不物理儲存在表中。基於函式的索引可以用於加快形如 select * from t where

function(database_column) = same_value 這樣的查詢,因為值 function(database_column)已經提前計

算並儲存在索引中。

GeoMesa 索引概述

geomesa使用許多不同的索引來滿足各種搜尋謂詞。每個索引都有乙個識別符號,用於在配置選項中引用它。geomesa將為給定的 featuretype模式建立各種索引。這允許我們以優化的方式回答各種查詢。geomesa將盡最大努力確定用於索引的屬性。要使用的屬性也可以指定為 featuretype。...

MySQL索引概述

1.什麼是索引?索引的英語單詞是 index 索引相當於一本字典的目錄,索引額作用是提高程式的檢索效率 查詢效率 2.主鍵自動新增索引,所以能夠通過主鍵查詢盡量通過主鍵查詢,效率較高 3.索引和表相同,索引是乙個物件,表儲存在硬碟檔案中的,索引也是儲存在硬碟檔案中的 4.在mysql資料庫管理系統中...

索引的概述

索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速得到...