我有一个表定义如下的 MYSQL DB:
CREATE TABLE `minute_data` (
`date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`open` decimal(10,2) DEFAULT NULL,
`high` decimal(10,2) DEFAULT NULL,
`low` decimal(10,2) DEFAULT NULL,
`close` decimal(10,2) DEFAULT NULL,
`volume` decimal(10,2) DEFAULT NULL,
`adj_close` varchar(45) DEFAULT NULL,
`symbol` varchar(10) NOT NULL DEFAULT '',
PRIMARY KEY (`symbol`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
它存储来自股票市场的 1 分钟数据点。主键是符号和日期列的组合。这样,我在任何时候每个符号都只有 1 个数据点。
我想知道为什么以下查询需要这么长时间,以至于我什至不能等待它完成:
从 test.minute_data 中选择不同的日期,其中 date >= "2013-01-01" order by date asc limit 100;
但是我可以select count(*) from minute_data;
并且很快就完成了。
我知道这一定与表中有超过 3.74 亿行数据有关,而我的台式电脑与超级计算机相去甚远。
有谁知道我可以尝试加快查询速度?我是否需要放弃使用这么大的 MySQL 表的所有希望?
非常感谢!