<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理


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

        B* 樹索引

    這些是我所說的 “ 傳統 “ 索引。到目前為止,這是 Oracle 和大多數其他數據庫中最常用的索引。 B* 樹的構造類似于二叉樹,能根據鍵提供一行或一個行集的快速訪問,通常只需很少的讀操作就能找到正確的行。不過,需要注意重要的一點, ” B* 樹 “ 中的 ” B “ 不代表二叉( binary ),而代表平衡( b alanced )。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* 樹索引,這些值就可能放在同一個右側塊上,這就加劇了對這一塊的競爭。利用反向鍵, Oracl e則會邏輯地對 205789 、 105789 、 005789 等建立索引。 Oracle 將數據放在索引中之前,將先 把所存儲數據的字節反轉,這樣原來可能在索引中相鄰放置的值在字節反轉之后就會相距很遠。通過反轉字節,對索引的插入就會分布到多個塊上。

        位圖索引( bitmap index 

    在一顆 B* 樹中,通常索引條目和行之間存在一種一對一的關系:一個 索引條目就指向一行。而對于位圖索引,一個索引條目則使用一個位圖同時指向多行。位圖索引適用于高度重復而且通常只讀的數據(高度重復是指相對于表中的總行數,數據只有很少的幾個不同值)。考慮在一 個有 100 萬行的表中,每個列只有 個可取值: 、 和 NULL 。舉例來說,如果你需要頻繁地統計多少行有值,這就很適合建立位圖索引。不過并不是說如果這個表中某一列有 11.000 個不同的值就不能建立位圖索引,這一列當然也可以建立 位圖索引。在一個 OLTP 數據庫中,由于存在并發性相關的問題,所以不能考慮使用位圖索引(后面我們就會討論這一點)。注意,位圖索引要求使用 Oracle 企業版或個人版。

    位圖聯結索引( bitmap join index ):這為索引結構(而不是表)中的數據提供了一種逆規范化的 方法。例如,請考慮簡單的 EMP 和 DEPT 表。有人可能會問這樣一個問題: “ 多少人在位于波士頓的部門工作 ?“ EMP 有一個指向 DEPT 的外鍵,要想統計 LOC 值為 Boston 的部門中的員工人數,通常必須完成表聯結,將 LOC 列聯結至 EMP 記錄來回答這個問題。通過使用位圖聯結索引,則可以在 EMP 表上對 LOC 列建立索引 。

    基于函數的索引( function-based index 

    這些就是 B* 樹索引或位圖索引,它將一個函數計算得到的結果存儲在行的列中,而不是存儲列數據本身。可以把基于函數的索引看作一個虛擬列(或派生列)上的索引,換句話說,這個列并不物理存儲在表中。基于函數的索引可以用于加快形如 SELECT * FROM T W HERE FUNCTION(DATABASE_COLUMN) = SAME_VALUE 這樣的查詢,因為值 FUNCTION(DATABASE_COLUMN) 已經提前計算并存儲在索引中。

    應用域索引( application domain index 

    應用域索引是你自己構建和存儲的索引,可能存儲在Oracle 中,也可能在 Oracle 之外。你要告訴優化器索引的選擇性如何,以及執行的開銷有多大,優化器則會根據你提供的信息來決定是否使用你的索引。 Oracle 文本索引就是應用域索引的一個例子;你也可 以使用構建 Oracle 文本索引所用的工具來建立自己的索引。需要指出,這里創建的 “ 索引 “ 不需要使用傳統的索引結構。例如, Oracle 文本索引就使用了一組表來實現其索引概念。

    posted on 2009-09-20 15:06 calvin 閱讀(1001) 評論(0)  編輯  收藏 所屬分類: Oracle
    主站蜘蛛池模板: 暖暖日本免费在线视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 午夜免费啪视频在线观看 | 免费av欧美国产在钱| 亚洲欧洲日本精品| 成人免费激情视频| 亚洲区视频在线观看| 97国产免费全部免费观看| 亚洲制服丝袜在线播放| 国产免费毛不卡片| 亚洲成av人在线观看网站 | 337p日本欧洲亚洲大胆裸体艺术 | 国产99视频精品免费专区| 亚洲av日韩av无码黑人| 一级毛片在线观看免费| 亚洲国产日韩女人aaaaaa毛片在线| 182tv免费观看在线视频| 亚洲综合丁香婷婷六月香| 午夜高清免费在线观看| 免费无码又爽又黄又刺激网站 | 亚洲成a人片7777| 毛片免费视频在线观看| 成人亚洲国产精品久久| 在线播放亚洲第一字幕| 无码少妇精品一区二区免费动态| 亚洲无线一二三四区| 四虎成人精品在永久免费| a在线视频免费观看在线视频三区| 中文字幕精品亚洲无线码一区| 日韩成人免费视频| 亚洲午夜在线播放| 亚洲区小说区图片区| 最近免费mv在线电影| 久久亚洲精品高潮综合色a片| 激情97综合亚洲色婷婷五 | 免费视频爱爱太爽了| 国产亚洲人成在线播放| 亚洲av片劲爆在线观看| 免费黄色大片网站| 久操视频免费观看| 国产精品久久亚洲一区二区|