oracle索引技术——天天笔记(1)

系统 1816 0

数据库的索引把用户感兴趣的列值连同其行标识符(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操作性能很差,所以最好是删除并重建它们,而不是维护,所以不需要日志记录

 

oracle索引技术——天天笔记(1)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论