我在MySQL表中有一堆金融股票数据。数据以每行1分钟的格式(OHLC)存储。根据该数据,我想创建30分钟/每小时/每日聚合。这个表是巨大的,并且按时间戳列上的日期函数分组会产生可怕的性能结果。
例如:以下查询产生了正确的结果,但最终耗费时间过长。
checkDB
该表在(市场,时间戳)列上有一个主索引。我还在timestamp列上添加了一个额外的索引。但是,这并没有多大帮助,因为日期/小时功能的使用意味着无论如何都要进行表扫描。
如何改善表现?也许我应该考虑一个与MySQL不同的数据库来提供专门的日期/时间索引?如果是的话,什么是一个好的选择?
有一点需要注意的是,如果我能获得每小时/每天/时间范围的最后一行就足够了。该数据库有数千万行。
MySQL版本:5.7
提前感谢您的帮助。
编辑:以下是Explain在完全相同格式的较小数据库上显示的内容: