首页 > 解决方案 > 使用子查询更快地进行查询

问题描述

我有下面的 mysql 查询,它从父表中选择行并获取子表的计数和总和。有没有办法提高性能?

select
    parent.id,
    parent.date,
    parent.name,
    (select count(child.id) 
     from child 
     where child.parentid = parent.id) as count,
    (select sum(child.amount) 
     from child 
     where child.parentid = parent.id) as sum
from 
    parent

标签: mysql

解决方案


也许JOIN是一种有效的方法:

select p.id, p.date, p.name, c.count, c.sum
from parent p left join (
        select parentid , count(*) as count, sum(amount) as sum
        from child
        group by parentid 
       ) c on c.parentid = p.id;

推荐阅读