oracle索引

索引

索引保存置指定条件的ROWID,

  • 表的索引

    • 索引信息

      -- USER_INDEXES

    • 索引列

      -- DBA_IND_COLUMNS

      --ALL_IND_COLUMNS

      --USER_IND_COLUMNS

    • 索引段位置及大小

      -- DBA_IND_EXPRESSIONS

      -- USER_IND_EXPRESSIONS

  • 索引和对应的表放在不同的硬盘的不同表空间能够提高查询速度,Oracle能够并行读取不同硬盘的数据, 避免IO冲突

  • 索引适用:

    • 频繁查询列 索引行数低于总数的15%
    • 频繁排序列
    • 索引加速select,影响insert和delete
    • 指定索引块空间的使用参数PCTFREE, 预留空间
    • 索引和表相同表空间:简化管理; 不同表空间: 提高访问性能
    • 大表建立索引时, 使用NOLOGGING 选项可以最小化重做记录, 降低索引建立时间
    • 小表不要建索引
    • join连接列建立索引
  • B树索引

    默认, 索引数据按升序排列 由根块、分支块和叶块

    create index IDX_EMP(ID)
    pctfree 25
    tablespace users;
    
  • bitmap索引

    当一个列的基数小于1%时, 这些列不再适合建立B树索引, 而适用于bitmap索引

    alter system set create_bitmap_area_size = 8000 000 用于指定建立bitmap时分配的位图区大小, 默认8M, 越大索引建立越快, 重启生效

  • reverse 反向索引

    顺序递增列上建立索引, B树在递增列上的索引(比如主键)会造成数据分布不均匀。反向索引将索引键值反转, 使其非递增, 然后简历B树, 这样B树更加均匀。

    create index IDX_EMP_JOB on emp(job) reverse
    
  • function索引

    create index emp_job_fun
    on emp(lower(job));
    
  • 索引碎片

    重建或合并索引

    alter index emp_index coalesce deallocate unused;

    alter index emp_index rebuild;

    删除:
    drop index emp_index

你可能感兴趣的:(oracle索引)