gpt4 book ai didi

mysql - 获取给定用户 ID 每天的最后一个值?结果慢,也许是 MAX 上的索引?

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

我正在运行一组脚本,每 2 小时抓取一次网络数据并将所有这些数据添加到一个表中。我想向我的用户提供一个图表,该图表主要显示每天的最新数据和一个月的进展情况。我有一个 MySQL 查询在过去运行良好,但由于表变得太大而开始变得有点迟钝。

这是我当前的查询:

SELECT *, DATE(datetime) as nicedate FROM accounts
WHERE ID in (

SELECT MAX(A.id) as maxids from accounts A
WHERE A.userid = ?
GROUP BY DATE(A.datetime)

)

我的思考过程基本上是获取每天的最新 ID,因为那是当天的最后一个条目。它在过去运行良好,但现在需要大约 1 秒才能获得结果,这并不理想。

有什么方法可以优化这个查询吗?也许是某种形式的每日最大值指数?我是否需要为每天的最大值创建一个新表?这会解决一些令人头疼的问题,但我不太喜欢这个想法...

很想知道你的想法!

谢谢,标记

最佳答案

为了获得更好的性能而不是 IN 子查询,请尝试使用连接

SELECT *, DATE(datetime) as nicedate 
FROM accounts
INNER JOIN (
SELECT DATE(A.datetime) my_date, MAX(A.id) as maxids from accounts A
WHERE A.userid = ?
GROUP BY DATE(A.datetime)
) t on t.maxids = accounts.ID AND t.my_date = DATE(datetime)

确保你至少有一个关于用户id的索引

关于mysql - 获取给定用户 ID 每天的最后一个值?结果慢,也许是 MAX 上的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58481568/

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