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

  • 相关阅读:
    springboot整合solr8.0
    Java学习笔记之JFileChooser的简单使用
    bootstrap-fileinput插件,上传成功后事件
    centos7中安装mysql8.0
    linux下安装mysql
    IDEA集成JRebel热部署和远程调试
    Flume学习之路 (一)Flume的基础介绍
    android studio的安装和卸载
    彻底卸载mysql
    电脑重装系统后各种环境和工具的安装配置
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3065411.html
Copyright © 2011-2022 走看看