Здравствуйте.
Есть таблица:
CREATE TABLE IF NOT EXISTS `table` (
`id` int(11) NOT NULL,
`state` enum('top','middle','bottom') NOT NULL,
`sub_state` enum('ok','fail') NOT NULL,
`grade` enum('great','bad') NOT NULL,
`last_access` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Нужно выбрать максимально быстро запись, которая удовлетворяет условию: state in ('top', 'middle'), sub_state = 'ok', grade = 'great' и last_access был самым минимальным.
Я составил запрос
SELECT * FROM table WHERE state in ('top', 'middle') AND sub_state = 'ok' AND grade = 'great' ORDER BY last_access LIMIT 1
Сделал составной индекс по всем полям, но выборка на количестве записей от 60к идет 50мс, EXPLAIN говорит, что используется filesort, если убрать ORDER BY, то выборка происходит за 0,5мс. Подскажите, пожалуйста, как выбрать нужную запись за минимально возможное время.