1
我敢肯定,我實現了這個解決方案是最有效的(需要2秒的時候,在只有3萬條記錄運行來完成)。有更快的方法嗎?如何加快我的MySQL查詢獲取每個用戶最近一次交易的AVG?
我的MySQL查詢,然後在下面的解釋:
SELECT DATE(m.date) AS day,
AVG(t.amount) AS amount
FROM transactions s
LEFT JOIN users m
ON m.id = s.user_id
WHERE
#only consider the most recent transaction for each user
s.id = (
SELECT id
FROM transactions s2
WHERE s2.user_id = s.user_id
AND s2.created_date = (
SELECT MAX(created_date)
FROM transactions s3
WHERE s3.user_id = s.user_id
)
)
GROUP BY day
ORDER BY day;
基本上它的說:「顯示每天的平均交易金額,只考慮每個用戶最近的交易」。
我已經創建了CREATED_DATE的索引。
我不想只是選擇MAX(transaction.id)用戶相關的交易,因爲不能保證添加到表新的交易記錄,始終是新的現實世界交易。