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

  • 相关阅读:
    linux环境下的时间编程
    golang1.13中重要的新特新
    vs2019+cmake实现Linux远程开发
    现代c++与模板元编程
    一个commit引发的思考
    golang中判断两个slice是否相等
    c++性能测试工具:计算时间复杂度
    c++性能测试工具:google benchmark入门(二)
    使用vs2019进行Linux远程开发
    智能指针和二叉树(3):图解查找和删除
  • 原文地址:https://www.cnblogs.com/szls-666/p/12494171.html
Copyright © 2011-2022 走看看