在10g中当主查询的谓词信息,被错误的放入子查询中,会导致子查询无法展开
explain plan for UPDATE DWF.F_PTY_INDIV O
SET END_DT = TO_DATE('2012-12-31', 'YYYY-MM-DD')
WHERE EXISTS (SELECT 1
FROM DWF.F_PTY_INDIV F
WHERE O.PTY_ID = PTY_ID
AND O.CORP_ORG = CORP_ORG
AND O.SOURCE_CODE = 'CMS'
AND SOURCE_CODE = 'CMS'
AND F.DW_DATA_DT = TO_DATE('2012-12-31', 'YYYY-MM-DD'))
AND O.DW_DATA_DT <> TO_DATE('2012-12-31', 'YYYY-MM-DD')
AND O.END_DT = TO_DATE('29991231', 'YYYY-MM-DD');
select * from table(dbms_xplan.display());
Plan hash value: 4112899302
------------------------------------
10g中注意子查询里主表谓词过滤的位置
本文讨论了在Oracle 10g中,子查询中的主表谓词过滤位置对查询性能的影响。错误地将主查询的谓词放入子查询可能导致子查询无法有效展开,从而增加执行成本。通过两个UPDATE语句的对比,展示了正确放置谓词的重要性,优化后的查询使用了HASH JOIN RIGHT SEMI操作,显著提高了效率。
摘要由CSDN通过智能技术生成