日期:2014-05-16 浏览次数:20368 次
Where子句的条件的顺序
由于Oracle解析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’;?