Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91799936
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-12 17:58:45

    来源:赛迪网技术社区    作者:meili

5. 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';
 
阅读(453) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~