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

  • 相关阅读:
    宝塔面板连接数据库失败
    fastadmin上线部署中遇到访问路径问题
    宝塔部署时,出现“open_basedir restriction in effect”错误
    layui hint:upload is not a valid module
    thinkphp--控制器怎么分配变量到公共模板
    jquey click事件无效
    1.31 SVN代码版本控制
    8.1 性能优化简介
    5.31 Nginx最全面知识
    4.115 Spring的事务管理
  • 原文地址:https://www.cnblogs.com/szls-666/p/12494171.html
Copyright © 2011-2022 走看看