數據庫的索引把用戶感興趣的列值連同其行標識符(ROWID)存儲在一起
ROWID包含了存儲列值的表行在磁盤上的物理位置
索引雖然能提高查詢的性能,但是也不能一度的創建索引,因為索引是有代價的
消耗磁盤空間,系統資源,在列值被修改的同時也必須修改相應的索引
?
Oracle默認的索引類型是 B樹 索引,適用于高基數列,也就是列值種類多。
SELECT DBMS_ROWID.ROWID_RELATIVE_FNO ( ROWID ), F4 ? FROM DEMOT ? WHERE F1 = 5 ; |
上面的PACKAGE中的方法是將ROWID轉換成有意義的信息
通過 rowid_info可以解析 ROWID內容
Object# is :128262
Relative_fno is :7
Block number is :3644
Row number is :0
?
位圖索引,適用于低基數列,列值種類少
主要用于數據倉庫
創建速度非常快,占用空間非常小
/* Formatted on 5/6/2013 14:55:23 (QP5 v5.240.12305.39446) */ SELECT SEGMENT_NAME , BYTES , EXTENTS ? FROM DBA_SEGMENTS ? WHERE ???? SEGMENT_TYPE = 'INDEX' ?????? AND OWNER = 'XXRPTH' ?????? AND SEGMENT_NAME IN ( 'DEMOT_BITMAP' , 'SYS_C0032427' ); |
判斷是否適合創建位圖索引,該列的有效值數目不足表中行數的1%,就適合
CREATE BITMAP INDEX DEMOT_BITMAP ?? ON DEMOT ( F7 ) ?? NOLOGGING; |
位圖索引的DML操作性能很差,所以最好是刪除并重建它們,而不是維護,所以不需要日志記錄
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
