I've got a problem with enum field in MySQL. When i use select with only one value SELECT * FROM test WHERE t IN ('new') everything is fine, but in case of several values SELECT * FROM test WHERE t IN ('new','deleted') MySQL doesn't use indexes at all, so perfomance of this queries is very low. Is it possible to do something with that ?
CREATE TABLE `test` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`t` ENUM('new','active','deleted') NOT NULL,
PRIMARY KEY (`id`),
INDEX `t` (`t`)
)
ENGINE=MyISAM;
INSERT INTO test SET t = 'new';
INSERT INTO test SET t = 'new';
INSERT INTO test SET t = 'active';
INSERT INTO test SET t = 'active';
INSERT INTO test SET t = 'deleted';
INSERT INTO test SET t = 'deleted';
EXPLAIN SELECT * FROM test WHERE t IN ('new');
id|select_type|table|type|possible_keys|key|key_len|ref |rows|Extra
1 |SIMPLE |test |ref |t |t |1 |const|2 |Using index condition
EXPLAIN SELECT * FROM test WHERE t IN ('new','deleted');
id|select_type|table|type|possible_keys|key |key_len|ref |rows|Extra
1 |SIMPLE |test |ALL |t |NULL|NULL |NULL|6 |Using where