gpt4 book ai didi

mysql - 性能

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

我有一条有效的 SQL 语句,但需要很长时间才能处理

我有一个 a_log 表和一个 people 表。我需要在 people 表中找到给定人员的每个 ID 的最后一个事件和关联的用户。

SELECT p.`id`, activity, appphone, appname, dateadd 
FROM people p
LEFT JOIN a_log a
ON p.id = a.id
WHERE ( dateadd >= '2011/09/13 00:00' and dateadd <= '2011/09/13 23:59')
AND (a.date_time = (SELECT MAX(a1.date_time)
FROM activity_log a1
WHERE a.id = a1.id
GROUP BY id) OR date_time IS NULL)
ORDER BY `id` desc limit 0, 100

我在 a_log 表中的 date_time 字段和 id 字段上有一个非唯一索引我在 people 表的 id 字段上有一个主索引,在 dateadd 字段上有一个非唯一索引

如何缩短此查询的执行时间?谢谢

最佳答案

这应该适合你:

SELECT p.`id`, p.activity, p.appphone, p.appname, p.dateadd, a.*
FROM people p
LEFT OUTER JOIN
(
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
) a ON p.id = a.id
WHERE ( dateadd >= '2011/09/13 00:00' and dateadd <= '2011/09/13 23:59' and `agent_or_underwriter` != 'agent')
ORDER BY p.id desc limit 0, 100

关于mysql - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407294/

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