os: oracle 11.2.0.4
抓取线上系统一个慢sql分析时,发现执行计划里有 merge join cartesian。根据以往经验,基本为统计信息不准确造成的,且大概率为不合理的执行计划。详细分析表之间的关联时,发现确实会导致超大结果集后再和其它表关联
增加 hint
通过添加 hint 调整
select /*+ ordered use_nl(a b) */
修改 _optimizer_mjc_enabled
alter system set "_optimizer_mjc_enabled" = false;
或者 session 级别修改
alter session set "_optimizer_mjc_enabled" = false;