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',因为它迫使我通过编组以及,这是返回不正确的结果。
有没有人知道更好的方式来做这个查询,这将减少运行查询所需的时间?