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';
优化SQL查询:WHERE子句的高效排列策略
本文深入探讨了ORACLE中优化SQL查询性能的关键策略,特别是在WHERE子句中表连接与条件表达式的排列顺序。通过实例对比,阐述了如何合理布局条件表达式以减少数据扫描量,显著提升查询效率。
147

被折叠的 条评论
为什么被折叠?



