0
一些背景優先。我們有一個帶有「實時貨幣」表的MySQL數據庫。我們使用API每5秒鐘爲不同貨幣提取最新貨幣值。該表目前擁有超過800萬行。表MySQL - 按間隔查詢優化組
結構如下:
id (INT 11 PK)
currency (VARCHAR 8)
value (DECIMAL
timestamp (TIMESTAMP)
現在,我們正在嘗試使用此表上繪製圖表中的數據。我們將會有各種不同的圖表,例如:Live,Hourly,Daily,Weekly,Monthly。
我在查詢時遇到了一些麻煩。以Weekly圖爲例,我想要輸出最近7天的數據,間隔15分鐘。所以這裏是我如何嘗試它:
SELECT *
FROM currency_data
WHERE ((currency = 'GBP')) AND (timestamp > '2017-09-20 12:29:09')
GROUP BY UNIX_TIMESTAMP(timestamp) DIV (15 * 60)
ORDER BY id DESC
這輸出我想要的數據,但查詢速度非常慢。我有一種感覺,GROUP BY子句是原因。
另外順便說一句,我已經關閉了sql模式'ONLY_FULL_GROUP_BY',因爲它迫使我通過編組以及,這是返回不正確的結果。
有沒有人知道更好的方式來做這個查詢,這將減少運行查詢所需的時間?