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’;