【oracle】关于同一个SQL在两个环境执行计划不一样的问题记录
问题描述:两个生产环境,部署系统、数据库版本等一致,执行sql:
select
a.field_1,a.field_2,b.field_1
from table_a a
left join table_b b on a.id=b.a_id
where b.field_conditon = '123';
其中,table_a是百万数据量大小的表。
- 正常环境执行计划,对table_a进行TABLE ACCESS BY INDEX ROWID;
- 问题环境执行计划,对table_a进行TABLE ACCESS FULL。
对索引等一系列可能影响因素检查后仍未能解决问题。最后只能通过修改sql的方式解决。
解决方法:
把表连接方式“left join”改为“join”。