教你如何成為Oracle 10g OCP - 第九章 物件管理(9) - 點陣圖(Bitmap)索引
9.2.6 點陣圖(Bitmap)索引
http://space.itpub.net/9842/viewspace-343286
點陣圖索引是另外一個索引型別,組織形式和b-tree索引相同,也是一顆平衡樹,區別
在於葉子節點裡存放索引條目的方式不同。前面知道,B數索引的葉子節點對於表裡
的每個資料行,如果索引列的值不為空,則會為這個記錄行在葉子節點中維護一個
對應的索引條目。 而點陣圖索引則不是這樣,葉子節點中存放的索引條目如下:
http://space.itpub.net/9842/viewspace-343286
點陣圖索引非常適用於DSS及資料倉儲系統,他們可以使用較少的基數(唯一鍵數目,
比如男和女,基數為2)列,訪問非常大的表,儘管點陣圖索引最多可以達到30個列,
但是一般都只用於少量的列。對於那些有較低基數的列要使用點陣圖索引。點陣圖索引
對於低基數(少量不同值)的列來說非常快,這是因為索引的大小相對於B樹索引來說
小很多,因為這些索引是低基數的B樹索引。
在表上建立索引後,點陣圖索引條目上(葉子節點中)還包含表裡第一條記錄所對應的rowid
及最後一條記錄所對應的rowid, 所以條目的最後一部分則是由多個bit位組成的bitmap,
每個bit位就對應一條記錄。 格式:
key start rowid end rowid bitmap
<01, AAAAAA , ZZZZZZ , 1000100100011001001 >
<02, AAAAAA , ZZZZZZ , 0101100100011100010 >
<03, AAAAAA , ZZZZZZ , 0000100101101001001 >
bitmap中沒有直接記錄rowid, 而是記錄了一個點陣圖, 點陣圖中的每一個bit位都對應一個rowid,
之間有轉換關係的.所以用bitmap索引的時候你可以在執行計劃裡看到 bitmap to rowid 這樣的步驟.
當我們發出where c1='01'這樣的SQL時,oracle會搜尋01所在的索引條目,然後掃描該
索引條目中的bitmap裡的所有bit位。第一個bit位是1,表示第一條上的c1的值是01,
於是返回第一條記錄所在的rowid(根據該索引條目裡記錄的start rowid加上行號得到
該記錄所在的rowid), 第二個bit位為0, 則說明第二條記錄上的c1值不為01,依此類推。
特別注意,如果索引列為空,也會在點陣圖索引中記錄,對應的bit位為0 ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-687520/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OCP(25):索引Oracle索引
- Android Bitmap(點陣圖)詳解Android
- 點陣圖(bitmap)原理以及實現
- oracle點陣圖索引對DML操作的影響Oracle索引
- 點陣圖索引(轉載)索引
- Oracle OCP(27):使用資料字典檢視管理物件Oracle物件
- Python點陣圖索引學習Python索引
- Oracle OCP(21):管理表Oracle
- Oracle OCP(58):ARCHIVELOG 管理OracleHive
- 點陣圖索引的工作原理 - Richard索引
- Redis 基礎 -- 點陣圖(bitmap)資料結構和 bitmap的常用命令Redis資料結構
- Oracle OCP(49):表空間管理Oracle
- Oracle 10g 增刪節點Oracle 10g
- ORACLE9I升級到10G(zt)Oracle
- 手把手教你將矩陣&概率畫成圖矩陣
- js如何使用索引訪問陣列物件中的元素JS索引陣列物件
- Oracle如何管理帶約束的B樹索引Oracle索引
- 慢查詢、pipline、釋出訂閱、 bitmap點陣圖、 hyperloglog、geo、持久化持久化
- Oracle assm三級點陣圖結構解析OracleSSM
- Oracle OCP(56)Oracle
- 驗證Oracle 10g線上整理碎片索引是否失效過程Oracle 10g索引
- Oracle OCP(17):管理不同時區的資料Oracle
- DM8管理陣列索引陣列索引
- PHP 物件轉換成陣列PHP物件陣列
- 點陣圖
- MySQL點陣圖索引解決使用者畫像問題MySql索引
- Oracle9i如何監視索引並清除監視資訊(轉)Oracle索引
- Oracle OCP(23):序列Oracle
- Oracle OCP(29):PROFILEOracle
- Oracle OCP(54):EXPOracle
- Oracle OCP(54):IMPOracle
- Oracle OCP(57):IMPDPOracle
- Oracle OCP(44):LSNRCTLOracle
- Oracle OCP(28):USEROracle
- Oracle OCP(30):ROLEOracle
- 教你如何在 elasticsearch 中重建索引Elasticsearch索引
- [C++之旅] 14 物件成員與物件陣列C++物件陣列
- Oracle如何建立B樹索引Oracle索引
- oracle 10g flashback databaseOracle 10gDatabase