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