[oracle]索引與索引表管理

來源:互聯網
上載者:User

標籤:ack   class   schema   設定   map   tor   insert   概念   ctf   

(一)索引的概念

索引是一種與表或簇相關的資料庫物件,能夠為資料的查詢提供快捷的存取路徑,減少磁碟I/O,提高檢索效率。

索引由索引值及記錄相應物理地址的ROWID兩個部分構成,並按照索引值有序排列,ROWID可以快速定位到資料庫表合格記錄。可以這樣理解,將索引看作是一本書的目錄,索引值即為目錄的標題,ROWID即為目錄的頁碼。

 

(二)索引的更新策略

隨著標準資料的插入、刪除、修改,索引表中的資訊會自動更新,具體過程:

l 向表中插入資料時,系統會在索引的葉子節點插入與表對應的索引條目;

l 刪除表中的資料時,系統自動刪除相關的索引條目,但是空間並沒有回收,也不會分配給新的索引條目使用,只有將整個葉子節點刪除,空間才會被回收;

l 修改索引表中的資料時,系統會刪除索引葉子節點的條目,然後重新分配索引條目

從更新策略可知,索引並不是建立的越多越好。索引在提高查詢效率的同時,會降低資料插入、刪除、更新的效率。Oracle建議將索引與表分散在不同的資料表空間中,最好分散在不同的磁碟上,以提高效率。

 

(三)索引結構

資料庫有2種索引結構:平衡樹索引結構(B_Tree)和位元影像索引結構(Bitmap)。

(1) 平衡樹索引結構

整個索引結構由根節點、分支節點、葉子節點三部分構成,其中分支節點可以有多層。根節點的資訊指向下一層分支節點,最底層的分值節點指向葉子節點,葉子節點儲存索引條目資訊。索引條目資訊由4部分構成:索引基於的列資訊(Index entry header)、索引列的長度(key column length)、索引值(key column value)及索引對應的ROWID。B_Tree索引佔用空間多,適合索引取值範圍廣(基數大)、重複率低的應用。

                                   圖.平衡樹索引結構圖

(2)位元影像索引結構

位元影像結構也是按平衡樹組織的,但是在葉子節點每個索引值對應一個位元影像而不是一個ROWID,一個位元影像裡面可以包含一個或多個ROWID,位元到ROWID的映射是通過索引中的映射函數實現的。位元影像索引適合於取值範圍小,待索引資料重複率高的列。

                                 圖.位元影像索引結構

(四)建立索引

可以使用create index建立索引:

CREATE [UNIQUE][BITMAP] INDEX [schema.]index_nameON [schema.]table_name(index_expr[ASC | DESC][,...])[PCTFREE integer] [PCTUSED integer] [INITRANS integer][STORAGE(storage_clause)][LOGGING][NOLOGGING][ONLINE][TABLESPACE tablespace_name][NOCOMPRESS | [ COMPRESS integer] ][SORT|NOSORT][REVERSE][NOPARALLEL |[ PARALLEL integer]]

解釋:

  • UNIQUE:建立唯一性索引,預設非唯一性
  • BITMAP:建立位元影像索引,預設B_Tree索引
  • 用於指定索引值的排列順序,ASC為升序,DESC為降序
  • PCTFREE | PCTUSED | INITRANS設定資料區塊的使用
  • STORAGE:設定索引的儲存方式,若不指定,則繼承資料表空間的儲存參數設定
  • LOGGING | NOLOGGING:指明索引建立過程是否寫入重做記錄檔,預設寫入
  • ONLINE:允許在建立索引或重建索引時執行DML(insert/update/delete等需要commit的語句)語句,但不允許執行DDL(create/alter/drop等不需要commit的語句)操作
  • TABLESPACE:指明儲存索引的資料表空間
  • CMPRESS | NOCOMPRESS:是否壓縮索引中的重複資料,預設不壓縮
  • SORT | NOSORT:在預設情況下,建立索引時會首先對錶中資料進行排序,假如我們的資料已經排好序了,我們可以選擇NOSORT,加快索引建立的速度;
  • REVERSE:建立反序索引
  • NOPARALLEL | PARALLEL:指明是否允許並行建立索引,預設值為NOPARALLEL
  •  

    【未完待續。。。】

    [oracle]索引與索引表管理

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.