【发布时间】:2012-02-24 21:46:13
【问题描述】:
我有一个 MySQL MyISAM 表,其中包含大约 4 亿行价格数据(7GB 数据 + 9GB 索引),包含 3 列:
CREATE TABLE `prices` (
`ts` datetime NOT NULL,
`id` int(10) unsigned NOT NULL,
`price` double NOT NULL,
PRIMARY KEY (`ts`,`instrid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1$$
不同的ids 的数量(我认为基数就是这个词)约为 500,对于大多数感兴趣的时间范围,在这些时间范围内,id 的基数低于 ~20(所以有3 月 1 日至 2 日之间只有 20 个左右不同的 ID)。
查询几乎完全是以下形式:
select ts, price from prices where ts between {t1} and {t2} and id = {id}.
似乎某些索引应该加快速度。
ts 和 id 上的组合索引或 ts 和 id 上的单独索引会更好吗?一些第三种选择?我也很感激有关我可以学习如何为自己回答这个问题的建议。
另一种表类型(InnoDB?)是否更适合我的目的?
【问题讨论】:
标签: mysql indexing query-optimization time-series