zoukankan      html  css  js  c++  java
  • 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)

       NOLOGGING;

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

  • 相关阅读:
    微信开发者工具怎么下载
    YII框架get,post传参
    yii提示您提交的数据无法被验证
    解决[Err] 1055
    mysql日期默认值格式('0000-00-00')错误解决
    phpstorm 2018破解版 2018.2下载安装和JetbrainsCrack.jar激活教程
    PHP代码优化
    对B/S 和 C/S 架构的理解
    关于 API 安全的问题
    2020年终总结
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3065411.html
Copyright © 2011-2022 走看看