• oracle 基于索引优化


    1、user_ind_statistics表:索引统计信息表

      Oracle中有三种类型的对象统计信息:表统计、列统计和索引统计。而在每种类型中,有细分为:表或索引级别的统计、分区级别统计和子分区级别的统计,后面两种只有在对象被分区和具有子分区的情况下才可用。

      user_ind_statistics的blevel字段为0表示索引仅有叶子块,高度为1 。高度低有利于索引范围扫描

    2、索引可优化count,sum,avg,切记不存储null,一可以设置该列为非空,也可以把sql改成:select count(*) from t where object_id is not null 。当然主键就无须定义列是否允许为空了。

    3、索引可优化排序。新增索引后, Oracle 就有可能利用索可本身就有序的特点来避免排序。

    4、组合索引的选择:

      适合单列查询返回多,组合查询返回少的场景。

      组合查询的组合顺序,要考虑单独的前缀查询。

      仅等值无范围查询时,组合的顺序不影响性能。

      组合索引最佳顺序一般是将等值查询的列置前。

      组合索引一般不宜过多,如果组合索引列达到4个以上 ,那这个索引本身就很大, 就不一定高效。另外更新也会出现比较大的性能问题。

    5、索引扫描类型的分类与构造

      index range scan            (select * f rorn t where object_id =8;)

      index unique scan          (create unique index)

      index full scan           (select * f rorn t order by object_id ;)

      index fast full scan(min/max)       (select max(object_id) from t5)

      index skip scan         

     6、同时取最大值和最小值的改法

      select max(object_id) , min(object_id) from t5;

      select max, min from (select max(object_id) max from t5 ) a , (select min(object_id) min from t5 ) b;

    7、索引失效的原因:

      索引逻辑失效:索引返回大量数据,不如用全表扫描。

             发生索引列的类型转换。

                对索引进行各种运算。

       物理索引失效:(查看方式:select distinct status from user_indexes)

              long 列调整导致索引失效

              move 操作会导致索引失效

              分区表导致索引失效的操作(增加 update gl obal indexes ,全局索引不会失效。) drop,split,exchange都会导致索引失效 

              add分区不会导致索引失效

    8、查看系统从为用到过的索引:

        create index idx_object_id on t5(object_type);

        alter index idx_object_id monitoring usage;//打开监控

        select count(*) from t5 where object_type='YHQTEST' select * from v$object_usage ;

        alter index idx_object_id nomonitoring usage ;//关闭监控

              

                 

    end:1疑难杂症:

     

    end2、索引的相关hint用法:

      select /*+index(t,idx_id_type)*/   * from t       //使用t表的idx_id_type索引。

      

  • 相关阅读:
    PAT 解题报告 1009. Product of Polynomials (25)
    PAT 解题报告 1007. Maximum Subsequence Sum (25)
    PAT 解题报告 1003. Emergency (25)
    PAT 解题报告 1004. Counting Leaves (30)
    【转】DataSource高级应用
    tomcat下jndi配置
    java中DriverManager跟DataSource获取getConnection有什么不同?
    理解JDBC和JNDI
    JDBC
    Dive into python 实例学python (2) —— 自省,apihelper
  • 原文地址:https://www.cnblogs.com/yaohuiqin/p/11655821.html
Copyright © 2020-2023  润新知