0
我在下面有一個查詢。通過JOIN GROUP和ORDER BY優化MySQL查詢的任何想法
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 | created_at | user_id | cnt
我試圖使用索引,但沒有得到加快。 問題是我需要接收任何時期的有序數據。 此外,如果我刪除ORDER BY
它運行速度更快,但我需要此訂單。
任何想法? 預先感謝您。
謝謝,它的工作速度提高了50%。但是如果我需要從stat_per_day獲得更多SUM()列,比如SUM(cnt2)呢?我有一個「操作數應該包含1列」的錯誤,但是做出很多子選擇是很慢的。 – Walkboy
@Walkboy。 。 。你會有一個不同的問題。你可以在'SELECT'中嘗試第二個子查詢。取決於數據,它可能不會對性能產生太大的影響。 –
不幸的是,添加子查詢會導致加速效果。 – Walkboy