sql 优化

避免冗余、谓词下沉、小表驱动大表、广播XX、分区分桶(join on)

Spark,hive

1.尽量使用列名

2.where 解析顺序 :右==>左

  where  condition1  and condition2  把结果最有可能为false的放在右面

  where condition1 or  and condition2 把结果最有可能为true的放在右面

3.尽量使用where,而不是having 因为 where是先过滤后分组,having是先分组后过滤

  

--查询10号部门的平均工资
SQL> select deptno,avg(sal)
  2  from emp
  3  group by deptno
  4  having deptno=10;
select deptno,avg(sal)
  2  from emp
  3  where deptno=10
  4* group by deptno

 4.尽量使用多表查询,而不是子查询

  因为子查询会查询两次 而多表查询只查询一次,而且oracle也是这样做的,大部分情况下它在优化的时候就把自查询转化为多表查询(分页除外);

 

 

 

 

 

 

posted @ 2017-04-15 10:26  酸奶加绿茶  阅读(223)  评论(0编辑  收藏  举报