条件任意保留一个,查询时间2秒,两个条件同时保留需要2分钟,请问是什么原因,数据库是oracle

select distinct rt.task_id taskId
  from B_MATERIAL_STORE_RECEIVE msr
  left join B_RECEIVE_TASK rt on msr.id = rt.materialstore_receive_id
  left join wbs_task t on rt.task_id = t.id
  left join wbs_task_detail wtd on wtd.id = t.taskdetailid
 where 1 = 1
   and wtd.project_id = 2973660594
   and wtd.construct_company_id = 38758069
   and msr.entity_status = 'completed'

图片说明
图片说明图片说明

调整一下条件的顺序试试;oracle自带的sqldeveloper有个sql优化指导功能,可以试一下

select distinct rt.task_id taskId
from B_MATERIAL_STORE_RECEIVE msr
left join B_RECEIVE_TASK rt on msr.id = rt.materialstore_receive_id
left join wbs_task t on rt.task_id = t.id
left join (select id from wbs_task_detail where project_id = 2973660594 and construct_company_id = 38758069 ) wtd on wtd.id = t.taskdetailid
where 1 = 1
and msr.entity_status = 'completed'


条件加到 表里面,如:
select * from
a
left join b on a.a=b.a
left jion c on b.c=c.c
where a.a=1 and b.c=2
改为
select * from (
select * from a where a.a=1) a
left join (
select * from b where b.c=2) b
left join c on b.c=c.c