mysql左连接需要按顺序排序,并按右表分组

时间:2019-11-27 06:47:17

标签: mysql groupwise-maximum

为简单起见,我写一个这样的例子

select
a.xx,
a.xx,
...  -- all table a's field

b.date,
b.money

c.date,
c.money,

d.date,
d.money,

e.date,
e.money

from 
a
left join b on a.id = b.a_id
left join c on a.id = c.a_id
left join d on a.id = d.a_id
left join e on a.id = e.a_id

where ... -- some condition
limit 10

在此sql中,表bc与表a是一对一的
但是表de不是那样。

没有优化。表de看起来像这样

-- ... sql before
left join
(
    select * from
    (select * from d order by date desc) as temp
    group by a_id
) as d on a.id = d.a_id

left join
(
    select * from
    (select * from e order by id desc) as temp
    group by a_id
) as e on a.id = e.a_id
-- ... sql after

但是实际上,运行它非常慢。
d是一个新表,它还没有大量数据(将来会很大)。
e现在有百万。表e的子查询使我的SQL非常慢。如何优化呢?

0 个答案:

没有答案
相关问题