oracle账号管理员权限设置oracle索引技术——天天笔记(1)

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

 

数据库的索引把用户感兴趣的列值连同其行标识符(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)

 

   NOoracle账号LOGGING;

 

位图索引的DML操作性能很差,所以最好是删除并重建它们,而不是维护,所以不需要日志记录

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。