select distinct a.id,a.building_name,f.record_person ,d.address,d.begin_date,
(select count(*) from t_supervise_job_assign where building_id=a.id) status,
a.create_user
from t_building a , t_building_info d,t_monitor_plan e,t_monitor_record f
where a.id=d.building_id AND e.f1_id=a.id AND e.stream_id=f.f1_stream_id
AND a.modify_flag<>'D' AND a.building_name like '%广东%'
order by status,d.begin_date desc
关键是这句(select count(*) from t_supervise_job_assign where building_id=a.id),
其中a.id是前面已经查出来的distinct a.id
请问怎样优化得到高效的查询?
(select count(*) from t_supervise_job_assign where building_id=a.id) status,
a.create_user
from t_building a , t_building_info d,t_monitor_plan e,t_monitor_record f
where a.id=d.building_id AND e.f1_id=a.id AND e.stream_id=f.f1_stream_id
AND a.modify_flag<>'D' AND a.building_name like '%广东%'
order by status,d.begin_date desc
关键是这句(select count(*) from t_supervise_job_assign where building_id=a.id),
其中a.id是前面已经查出来的distinct a.id
请问怎样优化得到高效的查询?
select distinct a.id,a.building_name,f.record_person ,d.address,d.begin_date,
status,
a.create_user
from t_building a , t_building_info d,t_monitor_plan e,t_monitor_record f,
(select id,count(*) status from t_supervise_job_assign group by id) g
where a.id=d.building_id AND e.f1_id=a.id AND e.stream_id=f.f1_stream_id
AND a.modify_flag<>'D' AND a.building_name like '%广东%' and
a.id = g.id
order by status,d.begin_date desc
create global temporary t_name as
select id,count(*) status from t_supervise_job_assign group by id
on commit preserve rows;
select distinct a.id,a.building_name,f.record_person ,d.address,d.begin_date,
t_name.status,
a.create_user
from t_building a , t_building_info d,t_monitor_plan e,t_monitor_record f,
where a.id=d.building_id AND e.f1_id=a.id AND e.stream_id=f.f1_stream_id
AND a.modify_flag<>'D' AND a.building_name like '%广东%' and
a.id = g.id
order by status,d.begin_date desc
上面的兄弟的查询结果就查不出这样的数据了,希望大家能明白我的意思。
t_supervise_job_assign表有没有building_id字段的索引?