• Oracle索引技术之如何建立最佳索引


    怎样建立最佳索引?

    1、明确地创建索引

    create index index_name on table_name(field_name)

    tablespace tablespace_name

    pctfree 5

    initrans 2

    maxtrans 255

    storage

    (

    minextents 1

    maxextents 16382

    pctincrease 0

    );

    2、创建基于函数的索引

    常用与UPPER、LOWER、TO_CHAR(date)等函数分类上,例:

    create index idx_func on emp(UPPER(ename)) tablespace tablespace_name;

    3、创建位图索引

    对基数较小,且基数相对稳定的列建立索引时,首先应该考虑位图索引,例:

    create bitmap index idx_bitm on class (classno) tablespace tablespace_name;

    4、明确地创建唯一索引

    可以用create unique index语句来创建唯一索引,例:

    create unique index dept_unique_idx on dept(dept_no) tablespace idx_1;

    5、创建与约束相关的索引

    可以用using index字句,为与unique和primary key约束相关的索引,例:

    alter table table_name

    add constraint PK_primary_keyname primary key(field_name)

    using index tablespace tablespace_name;

    如何创建局部区索引?

    1)基础表必须是分区表

    2)分区数量与基础表相同

    3)每个索引分区的子分区数量与相应的基础表分区相同

    4)基础表的自分区中的行的索引项,被存储在该索引的相应的自分区中,例如

    create index TG_CDR04_SERV_ID_IDX on TG_CDR04(SERV_ID)

    Pctfree 5

    Tablespace TBS_AK01_IDX

    Storage(

    MaxExtents 32768

    PctIncrease 0

    FreeLists 1

    FreeList Groups 1

    )

    local

    /

    如何创建范围分区的全局索引?

    基础表可以是全局表和分区表

    create index idx_start_date on tg_cdr01(start_date)

    global partition by range(start_date)

    (partition p01_idx vlaues less than ('0106')

    partition p01_idx vlaues less than ('0111')

    ...

    partition p01_idx vlaues less than ('0401'))

    /

    如何重建现存的索引?

    重建现存的索引的当前时刻不会影响查询

    重建索引可以删除额外的数据块

    提高索引查询效率

    alter index idx_name rebuild nologging;

    对于分区索引

    alter index idx_name rebuild partition partition_name nologging;

    删除索引的原因?

    1)不再需要的索引

    2)索引没有针对其相关的表所发布的查询提供所期望的性能改善

    3)应用没有用该索引来查询数据

    4)该索引无效,必须在重建之前删除该索引

    5)该索引已经变的太碎了,必须在重建之前删除该索引

    语句:

    drop index idx_name;

    drop index idx_name partition partition_name;

    建立索引的代价?

    基础表维护时,系统要同时维护索引,不合理的索引将严重影响系统资源,

    主要表现在CPU和I/O上。

    插入、更新、删除数据产生大量db file sequential read锁等待。

  • 相关阅读:
    商品列表双向联动 better-scroll
    【2020省选模拟】题解
    【洛谷 P3643】【APIO2016】 划艇(DP)
    【洛谷 P4384】 [八省联考2018]制胡窜(SAM / 线段树合并)
    【BZOJ #2034】 [2009国家集训队]最大收益(贪心 / 匈牙利算法)
    【BZOJ #4977】【[Lydsy1708月赛】 跳伞求生(模拟费用流)
    【洛谷 P5825】 排列计数(二项式反演 / 多项式 / 生成函数)
    【2020省选模拟】题解
    【LOJ #6068】「2017 山东一轮集训 Day4」棋盘(费用流)
    【洛谷 P4564】 【CTSC2018】假面(概率DP)
  • 原文地址:https://www.cnblogs.com/haquanwen/p/3812608.html
Copyright © 2020-2023  润新知