[oracle]索引與索引表管理


(一)索引的概念

索引是一種與表或簇相關的數據庫對象,能夠為數據的查詢提供快捷的存取路徑,減少磁盤I/O,提高檢索效率。

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

clip_image002

 

(二)索引的更新策略

隨着標准數據的插入、刪除、修改,索引表中的信息會自動更新,具體過程:

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

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

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

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

 

(三)索引結構

數據庫有2種索引結構:平衡樹索引結構(B_Tree)和位圖索引結構(Bitmap)。

(1) 平衡樹索引結構

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

clip_image003

                                   圖.平衡樹索引結構圖

(2)位圖索引結構

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

clip_image004

                                 圖.位圖索引結構

(四)創建索引

可以使用create index創建索引:

CREATE [UNIQUE][BITMAP] INDEX [schema.]index_name
ON [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
  •  

    【未完待續。。。】


    免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM