Oracle优化记录之一(Where条件顺序)
Where子句的条件的顺序
由于Oracle解析Where查询条件是自左向左,自下而上进行的。所以,可以过滤越多记录的条件越应该往后面移动。最大限制的Where子句放在句末。
--摘录-- (低效,执行时间156.3秒)SELECT … FROM EMP EWHERE SAL > 50000AND JOB = ‘MANAGER’AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);-- (高效,执行时间10.6秒)SELECT … FROM EMP EWHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO)AND SAL > 50000AND JOB = ‘MANAGER’;?