mysql - 使用子查询更快地进行查询
问题描述
我有下面的 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
解决方案
也许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;
推荐阅读
- jenkins - Jenkins 不运行 PM2
- java - 使用 Apache Commons Net 发送到 FTP 后文件大小增加
- android - 更好的 gradle 表达式为所有子项目执行 fileTrees.add()
- sql - SQL,foreach-loop-like INSERT 基于需要重新选择的插入值,可能吗?
- unity3d - 如何在 Unity VR 中正确缩放导入的 3D 模型?
- ionic-framework - 运行时错误语法错误:位置 0 处的 JSON 中的意外标记 <
- excel - 如何在 Excel(和 Google 表格)中找到稀疏数组的宽度和宽度?
- python - 将值设置为 CellVariable
- xml - kotlin 从 imageview 获取图像名称
- reactjs - React PropTypes 和子属性