我有一个非常缓慢的查询,并且不知道问题是什么。我试过添加多个where子句但没有效果。执行时间超过5分钟。
目标是选择上次使用LM_MAT中的产品的时间。这是由股票突变决定的; LMH_MAT。 LMH_MAT确实有160K记录,但是从lmh_mat执行Select *只需要16 ms。
我已经从this site确定了解决方案。
删除第二个子查询(选择前1个...)确实将执行时间缩短到不到6秒,put取消了整个目的:选择上次使用产品的时间。
平台:Sybase Advantage Data Architect。
我希望有人可以帮助我!
亲切的问候, 卢卡斯
查询:
select
lm_matn,
LM_OMSCH,
lm_hoev,
lm_minh,
lm_preh,
lm_datin,
XDate
from lm_mat A
left join (select lmh_matn, lmh_id, cast(lmh_date as sql_date) as XDate
from lmh_mat) F
on A.lm_matn = F.lmh_matn
AND F.lmh_id in
(select top 1 FF.lmh_id
from lmh_mat FF
where FF.lmh_matn=A.lm_matn
order by FF.lmh_date desc)
group by
lm_matn,
LM_OMSCH,
lm_hoev,
lm_minh,
lm_preh,
lm_datin,
XDate
答案 0 :(得分:0)
看看这样的东西是否给出了你想要的结果:
SELECT
lm_matn, LM_OMSCH, lm_hoev, lm_minh, lm_preh, lm_datin, XDate
FROM lm_mat
LEFT JOIN ( SELECT
lmh_matn,
MAX(lmh_date) AS XDate
FROM lmh_mat
GROUP BY lmh_matn
) AS a ON lmh_matn = lm_matn
GROUP BY
lm_matn, LM_OMSCH, lm_hoev, lm_minh, lm_preh, lm_datin, XDate