[PHP] desc t_d
c_id
c_date
c_value
desc t_s
c_no
c_start
...............
[/PHP]
需求是:
要取出t_d中id=1 和 id=2 的最大c_date所对应的c_value值,并且把表t_s中对应c_no=50的c_start最大的值取出来。
因为表t_d的数据量很大,这样的查询应该怎么优化才好。
[PHP]select
tp1.c_value c_p,
tp2.c_value c_hz,
tt.c_startc_start
from
(select max(c_date) m_date,c_id from t_d group by c_id having c_id = 1) tp3,
(select max(c_date) m_date,c_id from t_d group by c_id having c_id = 2)tp4,
t_d tp1,
t_d tp2,
t_stt,
(select max(c_start) m_start,c_no from t_s group by c_no having c_no = 50) tt1
where
(tt.c_start=tt1.m_start)
and
( tp1.c_id=tp3.c_id and tp1.c_date = tp3.m_date)
and
( tp2.c_id=tp4.c_id and tp2.c_date = tp4.m_date)
and rownum<2
;
[/PHP]
这个sql至少需要执行10分钟,作为应用这样的时间是让人无法忍受的,怎么优化才能提高速度??
|