[英]Any ideas to optimize MySQL query with JOIN GROUP and ORDER BY
我在下面有一個查詢。
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;
兩個表都有大約。 50萬條記錄。
表stat_per_day
結構:
id | created_at | user_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)
上的索引stat_per_day(user_id, created_at, cnt)
將有助於提高性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.