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操作性能很差,所以最好是删除并重建它们,而不是维护,所以不需要日志记录

  • 相关阅读:
    List<T> 添加 DataTable
    sql 在not in 子查询有null值情况下经常出现的陷阱
    SQL查询~ 存在一个表而不在另一个表中的数据
    SQL Server xtype
    jQurey 获取当前时间
    sp_rename
    Longest Substring Without Repeating Characters
    Fraction to Recurring Decimal
    链表翻转系列
    蓄水池抽样
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3065411.html
Copyright © 2011-2022 走看看