这应该根据条件的不同,oracle的优化器会自己优化.
解决方案 »
- 跪求pl/sql教程
- 两个Oracle服务器的数据同步
- 请问网上哪儿可以找到介绍Oracle Net8的包的结构的资料
- varchar(或者varchar2,或者nvarchar2)类型的字段,values('')和values(null)等同?
- 求救存储过程的小例子
- EXPDP能否导出某个用户的数据?
- 发生01008错误,可咋看都没问题,求救高手!谢谢
- 怎样查看各个表格之间的级联
- 在笔记本(p4,512m内存,40g硬盘)上装载window2000,ORACLE8i,php,apache最多能带几台客户端
- 登录独立启动时可以,但登录到Oracl Managerment Server 时就不行!!!
- 请问各位高手,怎样能动态添加一个字段,并显示固定信息!
- 过程执行成功,可以在plus查到,但是数据库里找不到记录???
oracle优化器会自己优化多条件where子句吗?
WHERE子句中的连接顺序.
ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
例如:
(低效,执行时间156.3秒)
SELECT …
FROM EMP E
WHERE SAL > 50000
AND JOB = ‘MANAGER’
AND 25 < (SELECT COUNT(*) FROM EMP
WHERE MGR=E.EMPNO);
(高效,执行时间10.6秒)
SELECT …
FROM EMP E
WHERE 25 < (SELECT COUNT(*) FROM EMP
WHERE MGR=E.EMPNO)
AND SAL > 50000
AND JOB = ‘MANAGER’;
thank you,zmgowin
SELECT …
FROM EMP E
WHERE SAL > 50000
AND JOB = ‘MANAGER’
AND 25 < (SELECT COUNT(*) FROM EMP
WHERE MGR=E.EMPNO); 与SELECT …
FROM EMP E
WHERE 25 < (SELECT COUNT(*) FROM EMP
WHERE MGR=E.EMPNO)
AND SAL > 50000
AND JOB = ‘MANAGER’;执行时间应该一致才对啊,为什么会出现那么大的差异呢?
but...
如果表里有索引呢?
是不是这个道理?
oracle默认是基于规则的吧