我有一个表exchange
CREATE TABLE `exchange` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`rank` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`volume` varchar(255) NOT NULL,
`timestamp` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=75032 DEFAULT CHARSET=utf8;
每5分钟,会记录一记数据,每次209条左右,是当前时间209个数字货币交易所的成交量。
我期望可以查到这样的数据:
rank name [volume(最新的144个值)] timestamp
我现在采用的笨办法是,一个个交易所去查,
得到交易所列表
一个个查
select volume from exchange where exchange.name='binance' order by timestamp
DESC limit 144
性能开销很大,想请教下,有没有更好的方法?
我有一个想法,不知道是否可行。
exchange
的结构不改动,新建一张表其中volume_statistics字段记录的是通过数组序列化或者符号分割后的最新的144个值,144个值可以是从小到大或者按时间整理好,然后每隔5分钟最前的元素剔除,从后面加入最新的元素。
这样每个交易所预处理好最新的144个值,获取交易所列表直接查询
exchange_statistics
即可。exchange
结构不需要改动,防止以后业务改动,有涉及统计的功能。这种方案不知如何?