gpt4 book ai didi

MySQL 查询超过 6 秒

转载 作者:行者123 更新时间:2023-11-29 05:09:39 24 4
gpt4 key购买 nike

不久前,我得到了一些关于特定查询的帮助。这是链接:SQL Group BY using strings in new columns

我的查询看起来与此类似:

SELECT    event_data, class_40_winner, class_30_winner
FROM events e
LEFT JOIN (SELECT result_event, name AS class_40_winner
FROM results
WHERE class = 40 AND position = 1) c40 ON e.id = c40.result_event
LEFT JOIN (SELECT result_event, name AS class_30_winner
FROM results
WHERE class = 30 AND position = 1) c30 ON e.id = c30.result_event

我现在已经在我的数据库中输入了足够的数据(22,000 行),这个查询需要 6 秒才能完成。 (我的实际查询比上面的大,因为它现在有 4 个连接。)

我在查询中使用了“解释”功能来查看。 “结果”表中的每个查询都在提取 22,000 行,所以这似乎是问题所在。

我已经做了一些研究,听起来我应该能够索引“结果”表中的相关列以帮助加快速度。但当我这样做时,它实际上将我的查询速度减慢了大约 10 秒。

关于我可以做些什么来改进这个查询有什么建议吗?

最佳答案

AFAIK,您正在旋转数据,我认为使用 max(case ...) ... group by 在旋转数据方面具有良好的性能。
我可以建议您改用此查询:

select event_date
, max(case when r.class = 40 then name end) `Class 40 Winner`
, max(case when r.class = 30 then name end) `Class 30 Winner`
from events e
left join results r on e.event_id = r.result_event and r.position = 1
group by event_date;

[SQL Fiddle Demo]

关于MySQL 查询超过 6 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647621/

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