簡體   English   中英

使用JOIN GROUP和ORDER BY優化MySQL查詢的任何想法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM