gpt4 book ai didi

mysql - 使用 JOIN GROUP 和 ORDER BY 优化 MySQL 查询的任何想法

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

我有一个疑问如下。

SELECT `user`.id, title, something, SUM(cnt) AS `total`, 
FROM `user`
LEFT JOIN `stat_per_day` ON stat_per_day.user_id = user.id
WHERE CAST(stat_per_day.created_at AS DATE) BETWEEN '2017-08-12' and '2017-09-12'
GROUP BY `user`.`id`
ORDER BY `total` DESC
LIMIT 250;

两个表都有大约。 500k 条记录。

stat_per_day结构:

id |创建于 |用户 ID | cnt

我正在尝试使用索引,但速度没有加快。问题是我需要接收任何时期的订购数据。另外,如果我删除 ORDER BY 它运行得更快,但我需要这个订单。

有什么想法吗?预先感谢您。

最佳答案

以下内容可能会有所帮助:

SELECT u.id, u.title, u.something,
(SELECT SUM(spd.cnt)
FROM stat_per_day spd
WHERE spd.user_id = u.id AND
spd.created_at >= '2017-08-12' AND
spd.created_at < '2017-09-13'
) AS total
FROM `user` u
ORDER BY total DESC
LIMIT 250;

stat_per_day(user_id,created_at,cnt)上的索引将有助于提高性能。

关于mysql - 使用 JOIN GROUP 和 ORDER BY 优化 MySQL 查询的任何想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46187560/

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