1.sql语句尽量大写
oracle是先解析SQL语句,把小写的字母转换成大写的再执行。
2.尽量写表的别名
当在SQL语句中连接2个以上的表时, 使用表的别名并把别名前缀于每个列上。可以减少解析的时间并减少那些由列歧义引起的语法错误。
例:
SELECT T1.EMPNO,
T1.ENAME,
T2.DNAME,
T1.DEPTNO --这里不加别名会报错
FROM EMP T1
JOIN DEPT T2
ON T1.DEPTNO=T2.DEPTNO
3.SELECT I子句中避免使用*
ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的
4.避免使用耗费资源的操作
带有DISTINCT 、UNION、ORDER BY的SQL语句会启动SQL引擎执行
耗费资源的排序(SORT)功能。DISTINCT需要一次排序操作,而其他的至少需要执行两次排序。
通常,带有UNION的SQL语句都可以用其他方式重写。
5.优化GROUP BY
1.提高GROUP BY 语句的效率,可以通过将不需要的记录在GROUP BY之前过滤掉。
例:
低效:
SELECT JOB,AVG(SAL)
FROM EMP
GROUP BY JOB
HAVING JOB = 'CLERK' OR JOB = 'MANAGER';
高效:
SELECT JOB,AVG(SAL)
FROM EMP
WHERE JOB = 'CLERK' OR JOB = 'MANAGER'
GROUP BY JOB;
网友评论