zoukankan      html  css  js  c++  java
  • SQL优化技术分析-3:SQL语句索引的利用

      使用索引来更快地遍历表。默认情况下建立的索引是非聚集索引,但有时它并不是最佳的。在非聚集索引下,数据
    在物理上随机存放在数据页上。合理的索引设计要建立在对各种查询的分析和预测上。一般来说:
       有大量重复值且经常有范围查询(between,>,<,>=,< =)和order by、group by发生的列,可考虑建立聚集索引。
       经常同时存取多列,且每列都含有重复值可考虑建立组合索引。
       组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。 
       ORDER BY和GROPU BY:使用ORDER BY和GROUP BY短语,任何一种索引都有助于SELECT的性能提高。注意如果索引列中
    有NULL值,Optimizer将无法优化。
        IN、OR子句常会使用工作表,使索引失效。如果不产生大量重复值,可以考虑把子句拆开,拆开的子句中应该包含索
    引。
        用聚集索引比用非聚集索引的主键速度快。
        用聚集索引比用一般的主键做order by时速度快,特别是在小数据量情况下。    
    	
        1、操作符优化(同上)  
     
      2、对条件字段的一些优化   
        任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等,查询时要尽可能将操作移至等号右边。
      采用函数处理的字段不能利用索引,如:   
    
      substr(hbs_bh,1,4)=’5400’,优化处理:hbs_bh like ‘5400%’   
    
      trunc(sk_rq)=trunc(sysdate), 优化处理:sk_rq>=trunc(sysdate) and sk_rq
    
      进行了显式或隐式的运算的字段不能进行索引,如:ss_df+20>50,优化处理:ss_df>30   
      
      sk_rq+5=sysdate,优化处理:sk_rq=sysdate-5   
    
      hbs_bh=5401002554,优化处理:hbs_bh=’5401002554’,注:此条件对hbs_bh 进行隐式的to_number转换,
    因为hbs_bh字段是字符型。   
    
      条件内包括了多个本表的字段运算时不能进行索引,如:ys_df>cx_df,无法进行优化 
  • 相关阅读:
    【转】C++ ZLib压缩与解压缩
    【转】Log4j 配置最全说明
    【转】每个程序员都必须遵守的编程原则
    【转】MySQL忘记root密码
    【转】OpenGL开发环境配置
    Tomcat不能启动注意事项
    Tomcat不能启动注意事项
    Android通过php插入查询SQL数据库
    Ehcache学习总结(3)--Ehcache 整合Spring 使用页面、对象缓存
    Ehcache学习总结(3)--Ehcache 整合Spring 使用页面、对象缓存
  • 原文地址:https://www.cnblogs.com/wd775/p/5672847.html
Copyright © 2011-2022 走看看