Oracle优化SQL执行效能的几点常识

资讯 驱动中国 rocket 945 次阅读 0 条评论
分享 Q

我想大家都知道,优化数据库的执行效能是一个专门的技术,Oracle有这方面专门的图书,如Oracle Tunning Tec.本文只涉及了很少的一部分--优化SQL的一些小常识。

1)不知大家是否喜欢使用‘NOT IN’这样的操作,如果是,那尽量使用(NOT) EXISTS 替代

例子:
语句1

SELECT dname, deptno

FROM dept

WHERE deptno NOT IN

(SELECT deptno FROM emp);

语句2

SELECT dname, deptno

FROM dept

WHERE NOT EXISTS

(SELECT deptno

FROM emp

WHERE dept.deptno = emp.deptno);

明显的,2要比1的执行性能好很多

因为1中对emp进行了full table scan,这是很浪费时间的操作。而且1中没有用到emp的index,

因为没有where子句。而2中的语句对emp进行的是range scan。



2)在海量查询时尽量少用格式转换。

如用

WHERE a.order_no = b.order_no

而不用

WHERE TO_NUMBER (substr(a.order_no, instr(b.order_no, '.') - 1)

= TO_NUMBER (substr(a.order_no, instr(b.order_no, '.') - 1)




3)查询海量数据是,可以使用optimizer hints,例如/*+ORDERED */



SELECT /*+ FULL(EMP) */ E.ENAME

FROM EMP E

WHERE E.JOB = 'CLERK';

而不是

SELECT E.ENAME

FROM EMP E

WHERE E.JOB || '' = 'CLERK';

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友