gpt4 book ai didi

mysql - 使用 group by 进行慢速查询

转载 作者:行者123 更新时间:2023-11-30 01:35:49 25 4
gpt4 key购买 nike

当我运行以下查询时,速度有些慢(约 6 秒):

SELECT sql_no_cache
t1.id, t2.id, count(injury.id)
FROM age_group as t1
CROSS JOIN body_part as t2
LEFT JOIN injury
ON t1.id = injury.age_group_id
AND t2.id = injury.body_part_id
GROUP BY t1.id,t2.id

如果我删除GROUP BY,那么它会快速执行。

当我使用EXPLAIN时,与GROUP BY的唯一区别是它列出了“使用索引;使用临时;使用文件排序”。

我不知道如何避免这种情况。

我们需要能够对伤害表中的任何字段进行分组,因此为每个组合建立索引可能不是一个好的解决方案。

有什么想法吗?

最佳答案

您可以在没有连接的情况下进行聚合:

select injury.age_group_id, injury.body_part_id, count(*)
from injury
group by injury.age_group_id, injury.body_part_id

这只会返回有伤害的结果。

如果效果良好,则随后进行连接:

select t.id, t2.id, coalesce(injury.cnt, 0)
from age_group as t1 CROSS JOIN
body_part as t2 left outer join
(select injury.age_group_id, injury.body_part_id, count(*) as cnt
from injury
group by injury.age_group_id, injury.body_part_id
) injury LEFT JOIN
injury ON t1.id = injury.age_group_id and t2.id = injury.body_part_id

关于mysql - 使用 group by 进行慢速查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com