sql优化的部分原则
- 查询的时候尽量使用列名;如:select ename,sal from emp;
- 在子查询和多表查询之间选择,尽量使用多表查询;
- 在集合运算中,如果 union和union all都可以,考虑使用union all.因为union需要去掉重复;
- 尽量避免使用集合运算;
在where和having都能使用的情况下,推荐选择where;(where后面不能使用分组函数)
NULL值的问题
包含null的表达式都为null;
- null 永远 !=null;
- 如果集合中含有null,不能使用not in ,但可以使用 in;
- null值的排序问题,在升序中null在下,而在降序中null在上;(莫种意义上oracle中null最大)
在组函数中自动虑空;(可以嵌套虑空函数来屏蔽其虑空功能)
子查询的相关原则
- 主查询的where select having from 后面都可以使用子查询;(group by后面不能使用子查询)
- 一般不在子查询中排序;(在Top-n分析问题中,必须对子查询排序)
- 一般先执行子查询,再执行主查询;(相关子查询例外)