SQL优化
来源:互联网 发布:装修预算软件下载 编辑:程序博客网 时间:2024/06/06 05:53
1.Oracle解析sql是从右至左的。
对于where condition1 and condition2 来说,只要有一个条件为false,就不会再去解析另一个条件,所以我们要把false的条件放在右边。
对于where condition1 or condition2 来说,只要有有一个条件为true,就不会再去解析另一个条件,所以我们要把true的条件放在右边。
2.在使用GROUP BY的时候,如果HAVING 和 WHERE都可以使用的情况下,先使用WHERE,再使用having
原因:如果一张表中有五千万条数据,需求是查询10号部门的员工并按照其职务分组,然后计算他们的平均工资。假设10号部门的员工只有50条记录,如果这时候我们先GROUP BY JOB(按照职务来分组)那么10号部门以外的员工也会进行按职务的分组操作,也就是说五千万条的数据都要进行分组操作,所以说性能是很低的。如果我们先用WHERE语句,选出部门为10的员工,即只有50条记录,然后再对这50条记录进行职位的分组操作,并计算其分组后的平均工资,这时效率将大大提高。
注意:当条件里需要用到组函数的情况,那么GROUP BY只能用HAVING来作为筛选条件的语句。WHERE子句中是绝对不能用组函数的。
例如:
--查询平均工资大于2000的部门信息SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL) >2000;
3.在查询的时候尽量使用列名(Oracle 9i之后,*和列名是一样的)
4.查询部门名称为SALES的员工信息(子查询和多表查询都能完成任务,理论上来说多表查询效率高,因为下面的子查询进行了两次查询,但也不排除oracle公司已经优化。)
方法一(子查询):
SELECT * FROMEMPWHERE DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME='SALES')方法二(多表查询):
SELECT * FROMEMP E,DEPT DWHERE E.DEPTNO=D.DEPTNO AND D.DNAME='SALES'5.尽量不要使用集合运算.union这种
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- sql优化
- sql优化
- Sql优化
- sql优化
- sql优化
- SQL 优化
- sql优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- Android项目结构 以及体系结构
- 【Cocos2dx通信(Http&Socket)相关编译到Android细节总结】编译加入curl关联lib与头文件 && 解决pthread的cancel函数NDK不支持,找不到sockaddr_i
- OCP-1Z0-052-V8.02-46题
- Spring中@Inject 如何通过构造器注入Provider
- Myeclipse 便捷输出 syso
- SQL优化
- ORACLE设置当前日期格式
- 用JNI调用C或C++动态联接库入门
- js限制输入框字数
- leetcode:Partition List (链表处理)【面试算法题】
- 如何训练自己
- Android 中Java 和C/C++的相互调用方法
- Apache支持htaccess
- 字符串的按字节截取