索引學習筆記-1(Oracle9i/10g程式設計藝術-深入資料庫體系結構)
索引是一個很寬泛的主題,他是開發人員和資料庫DBA之間的一個橋樑,深刻理解索引是資料庫從業人員必須掌握的一個內容。在實際的開發應用中索引使用不當會導致一些系統效能的問題,如果有太多的索引,不僅維護起來極其麻煩,而且還會在一定程度上影響DML的效能,如果索引過少,又會對查詢產生效能上的影響,因此找到一個適當的索引效能的平衡點,對應用的效能影響至關重要。
Oracle索引的概述
B*樹索引:
----------------
所謂傳統的索引,也是Oracle和大多數資料庫最常見的一種索引,B*數索引在一定程度上類似於二叉樹,但並不是一顆二叉樹。通過B*樹索引可以根據索引條目或鍵中記錄行的rowid迅速訪問到相關的行或者行集。
B*樹索引分為以下幾種:
1.索引組織表(Index organized table)
這是表類中的一種,相比最常用Heap organized table,索引組織表中的資料是按照索引鍵的順序來儲存和排序的。在使用SQL語句訪問表的行為和Heap organized table一致。
2.B*樹聚簇索引(B*tree cluster index)
用於對聚簇鍵建立索引,在傳統的B*樹索引中,鍵都指向一行,而對於B*樹聚簇索引會指向一個塊,這個塊中包含與這個聚簇索引相關的多行
3.降序索引(descending index)
此索引允許資料在索引結構中按照“從大到小”的順序排序,而不是按“從小到大”的順序排序。
4.反向鍵索引(reverse key index)
這類索引其鍵中的位元組值會反轉儲存,比如利用一個序列來生成主鍵,這個序列將生成諸如7071,7072,7073....類似的值。倘若我們使用一個傳統的B*樹索引的話,這些值就可能會放到同一個索引塊上,這樣就會加劇這一葉子結點塊的熱塊競爭。如果此時利用反向鍵索引,那麼Oracle就會邏輯的對1707,2707,3707....等建立索引,那麼在將資料放在索引中之前,將先把所儲存資料的位元組反轉,這樣原本可能在索引中相鄰放置的值在位元組反轉之後就會相距很遠,通過反轉位元組,對索引的插入的資料就會放在多個塊上。
點陣圖索引(bitmap index):
------------------------------------
在傳統的B*樹索引中,索引條目和資料行之間是一一對應的關係,對於點陣圖索引來說,一個索引條目利用一個點陣圖同時指向多行,因此點陣圖索引適用於高度重複而且通常只讀的資料
點陣圖連線索引(bitmap join index):
-----------------------------------------------------
函式索引(function-based index):
---------------------------------------------
可以把基於函式的索引看成是一個虛擬列上的索引。這種索引可以用於加快諸如:
select * from t where function(my_column) = value;這樣類似的查詢。
其中function(my_column)是提前計算出來並儲存在function-based index中.
應用域索引(application domain index):
------------------------------------------------------
這是一種自行構建的索引,可能儲存在Oracle中也可能儲存在Oracle之外。Oracle Text Search的索引就是一個例子,有一點需要注意的是這裡建立的索引並不一定需要使用傳統的索引結構。
Oracle索引的概述
B*樹索引:
----------------
所謂傳統的索引,也是Oracle和大多數資料庫最常見的一種索引,B*數索引在一定程度上類似於二叉樹,但並不是一顆二叉樹。通過B*樹索引可以根據索引條目或鍵中記錄行的rowid迅速訪問到相關的行或者行集。
B*樹索引分為以下幾種:
1.索引組織表(Index organized table)
這是表類中的一種,相比最常用Heap organized table,索引組織表中的資料是按照索引鍵的順序來儲存和排序的。在使用SQL語句訪問表的行為和Heap organized table一致。
2.B*樹聚簇索引(B*tree cluster index)
用於對聚簇鍵建立索引,在傳統的B*樹索引中,鍵都指向一行,而對於B*樹聚簇索引會指向一個塊,這個塊中包含與這個聚簇索引相關的多行
3.降序索引(descending index)
此索引允許資料在索引結構中按照“從大到小”的順序排序,而不是按“從小到大”的順序排序。
4.反向鍵索引(reverse key index)
這類索引其鍵中的位元組值會反轉儲存,比如利用一個序列來生成主鍵,這個序列將生成諸如7071,7072,7073....類似的值。倘若我們使用一個傳統的B*樹索引的話,這些值就可能會放到同一個索引塊上,這樣就會加劇這一葉子結點塊的熱塊競爭。如果此時利用反向鍵索引,那麼Oracle就會邏輯的對1707,2707,3707....等建立索引,那麼在將資料放在索引中之前,將先把所儲存資料的位元組反轉,這樣原本可能在索引中相鄰放置的值在位元組反轉之後就會相距很遠,通過反轉位元組,對索引的插入的資料就會放在多個塊上。
點陣圖索引(bitmap index):
------------------------------------
在傳統的B*樹索引中,索引條目和資料行之間是一一對應的關係,對於點陣圖索引來說,一個索引條目利用一個點陣圖同時指向多行,因此點陣圖索引適用於高度重複而且通常只讀的資料
點陣圖連線索引(bitmap join index):
-----------------------------------------------------
函式索引(function-based index):
---------------------------------------------
可以把基於函式的索引看成是一個虛擬列上的索引。這種索引可以用於加快諸如:
select * from t where function(my_column) = value;這樣類似的查詢。
其中function(my_column)是提前計算出來並儲存在function-based index中.
應用域索引(application domain index):
------------------------------------------------------
這是一種自行構建的索引,可能儲存在Oracle中也可能儲存在Oracle之外。Oracle Text Search的索引就是一個例子,有一點需要注意的是這裡建立的索引並不一定需要使用傳統的索引結構。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12361284/viewspace-218028/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 9i & 10g程式設計藝術資料庫體系結構Oracle程式設計資料庫
- Oracle Database 9i/10g/11g程式設計藝術——深入資料庫體系結構OracleDatabase程式設計資料庫
- Oracle9i&10g程式設計藝術-深入資料庫體系結構Oracle程式設計資料庫
- Oracle 讀書 -- Oracle 9i & 10g程式設計藝術資料庫體系結構Oracle程式設計資料庫
- Oracle Database 9i/10g/11g程式設計藝術:深入資料庫體系結構:第2版OracleDatabase程式設計資料庫
- 【讀後感】【Tom】《Oracle 9i&10g 程式設計藝術》深入資料庫體系結構Oracle程式設計資料庫
- oracle程式設計藝術筆記-1Oracle程式設計筆記
- 資料結構學習筆記1資料結構筆記
- JavaScript DOM 程式設計藝術 學習筆記01JavaScript程式設計筆記
- JavaScript DOM 程式設計藝術 學習筆記 02JavaScript程式設計筆記
- Oracle Database 9i10g11g程式設計藝術深入資料庫體系結構第2版OracleDatabase程式設計資料庫
- Oralce 入門教程:Oracle Database 9i 10g 11g程式設計藝術 深入資料庫體系結構 第2版OracleDatabase程式設計資料庫
- JavaScript DOM程式設計藝術筆記1JavaScript程式設計筆記
- Hive學習筆記 1 Hive體系結構Hive筆記
- 結構化程式設計--學習筆記程式設計筆記
- PostgreSQL 資料庫學習 - 1.資料庫體系結構之儲存結構SQL資料庫
- orientDB學習筆記(三)資料庫 構架設計筆記資料庫
- Oracle體系結構學習筆記Oracle筆記
- ASM學習筆記_體系結構ASM筆記
- 資料結構學習筆記資料結構筆記
- 《ORACLE 9i/10g/11g程式設計藝術》學習筆記 配置環境Oracle程式設計筆記
- Postgresql資料庫體系結構-程式和記憶體結構SQL資料庫記憶體
- oracle程式設計藝術筆記-2Oracle程式設計筆記
- JavaScript入門學習之旅(二)——JavaScript DOM程式設計藝術學習筆記(上)JavaScript程式設計筆記
- DG學習筆記(2)_體系結構筆記
- 資料結構學習筆記--棧資料結構筆記
- Oracle資料庫開發——深入索引結構Oracle資料庫索引
- 好程式設計師大資料學習筆記:Storm架構程式設計師大資料筆記ORM架構
- R 語言程式設計藝術筆記程式設計筆記
- 《深入理解java虛擬機器》學習筆記1——Java記憶體結構Java虛擬機筆記記憶體
- 系統程式設計學習筆記程式設計筆記
- 資料結構學習筆記(一) (轉)資料結構筆記
- 資料結構學習筆記-堆排序資料結構筆記排序
- 深入理解計算機系統-學習筆記 (1)計算機筆記
- GO 學習筆記->結構體Go筆記結構體
- Oracle Database 9i/10g/11g程式設計藝術 筆記OracleDatabase程式設計筆記
- 學習筆記:InnoDB表和索引結構(二)筆記索引
- 學習筆記:InnoDB表和索引結構(一)筆記索引