zoukankan      html  css  js  c++  java
  • 部分SQL优化

    1.表名顺序:不影响业务逻辑情况下,一般情况下大表在左,小表在右;三表以上出现交叉表,则交叉表在前。
    2.WHERE子句顺序:执行顺序ORACLE由右到左,效率基本相同;
    3.JOIN表的右表条件尽量写在ON中,不要在WHERE之后(注:使用左连接两者是有区别的);
    4.多个大表的JOIN尽量先分页再连接;
    5.避免全表扫描:
      5.1 避免对索引列进行函数或是表达式操作;
      5.2 索引列最好是not null列,使用is not null 永远不会使用索引列,is null有时也不会使用;
      5.3 避免使用<> != 不等于操作符,会限制索引,引起全表查询;
      5.4 '%A%','%A' 不使用索引, 'A%'使用索引;
      5.5 非索引列使用OR查询会导致全表查询;
      5.6 使用not in 不会使用索引,用not exists 或者(外连接+条件)替代;

    6.查询结果中避免使用“*”, 用count(0)替代count(*);
    7.使用表的别名来避免列相同查询错误。
    8.使用>=替代>; a1 = a2*100 替代a1/a2=100;datetime =to_char('20121122','yyyymmdd') 替换  to_char(datetime,'yyyymmdd') = '20121122'
    9.使用union 替换 or; exists(或外连接)替换 in;(注: in 中个数如果是char<100,int<1000个效果可以,否则必须要用其他替代);

  • 相关阅读:
    Spring:dispatchservlet
    信息系统设计
    数据流图的绘制方法
    信息系统管理工程师学习笔记
    JS语法学习笔记
    jQuery
    用Excel生成Sql
    JAVA-Reflect
    Java创建对象的过程
    有关死锁那点事儿
  • 原文地址:https://www.cnblogs.com/xuxian/p/4001532.html
Copyright © 2011-2022 走看看