zoukankan      html  css  js  c++  java
  • sql性能调优的注意项

    sql性能调优的注意项

    1. SELECT子句中避免使用 ‘ * ‘
    使用’*’ ,Oracle便会查询数据字典,依次解析各列名,应明确指定各列的名称,这样也便于理解
    2. 用>=替代>
    3.用EXISTS替代IN
    用IN将启用全表扫描,使用EXISTS将利用索引,提高查询效率。
    4.用NOT EXISTS替代NOT IN
    用NOT IN将启用全表扫描,使用NOT EXISTS将利用索引,提高查询效率。
    5.避免在索引列上使用IS NULL和IS NOT NULL
    6.用UNION-ALL 替换UNION
    7.通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描.
    注意, 以上规则只针对多个索引列有效. 如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低.
    8.用WHERE子句替换HAVING子句
    避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销
    9.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。
    提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉
    10.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描,如:
    select id from t where num=10 or Name =‘admin’
    可以这样查询:
    select id from t where num = 10 union all s

  • 相关阅读:
    Windows脚本转换Liunx识别并执行
    分布式事物常见解决方案
    SIMD加速计算矩阵(组成原理实验5)
    Code-server搭建web IDE
    CentOS 8 修改SSH端口
    Floyd算法的原理和实现代码
    initNativeTransServiceId . ntrans:object componentId :-368613127 微信小程序
    对象搜索算法挑战
    微信小程序小窗无效
    《六层楼》--宋东野
  • 原文地址:https://www.cnblogs.com/szls-666/p/12494171.html
Copyright © 2011-2022 走看看