MyISAM - SELECT * FROM table WHERE t> ...不使用t键

时间:2015-03-11 12:28:57

标签: mysql select indexing myisam

我有一个数据库,其中事件存储时间戳,这是非常巨大的。数据库使用3个密钥,其中一个是时间戳" t"。

表定义:

id | bigint(20) AI PK id_para | int(10) UN t | int(11) UN t_ms | smallint(6) UN t_ns | bigint(20) UN PK id_inst | smallint(6) value | varchar(255) isanchor| tinyint(4) UN

如上所述,引擎是MyISAM,我正在使用mysql5.6。

当我想在某个时间戳之后获得每个事件时,我使用

SELECT * FROM edl.data_inc WHERE t > '1424685000';

说明它检查大约400k行并使用where。它应该使用索引,就像使用

一样
SELECT t FROM edl.data_inc WHERE t > '1424685000';

解释显示它检查大约100k行并使用where和index。我让DB使用SELECT *索引的唯一方法是使用

SELECT * FROM edl.data_inc FORCE INDEX(t) WHERE t > '1424685000';

即便如此,它也没有说使用索引,但行数只有100k。将时间戳更改为数字而不是字符串也不会做任何事情。

我做错了什么?提前谢谢!

0 个答案:

没有答案