gpt4 book ai didi

mysql - 调整 SQL 查询以获得更好的性能

转载 作者:行者123 更新时间:2023-11-29 04:28:04 25 4
gpt4 key购买 nike

我有这个 SQL 语句可以工作但需要一段时间才能执行

我有一个事件表,我需要找到每个 ID 的最后一个事件和关联的用户。

SELECT id, date_time, user  
FROM activity_log a
WHERE a.date_time = (SELECT MAX(a1.date_time)
FROM activity_log a1
WHERE a.id = a1.id
GROUP BY id)
ORDER BY `id` desc limit 0, 100

我在 date_time 字段和 id 字段上有一个非唯一索引。

我们如何才能缩短此查询的执行时间?

最佳答案

您当前拥有的是一个相关子查询,它需要对您从外部选择返回的每一行进行计算。

相反,将 id 和 max(date_time) 的整个数据集作为子查询返回并连接到它。这只需要访问 activity_log 表 1 次即可找到每个 max(date_time),这将显着改善您的运行时间。

SELECT a.id, a.date_time, a.user  
FROM activity_log a
INNER JOIN (
SELECT id, MAX(date_time) as date_time
FROM activity_log
GROUP BY id) a1
ON a.id = a1.id and a.date_time = a1.date_time
ORDER BY `id` desc limit 0, 100

关于mysql - 调整 SQL 查询以获得更好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405887/

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