я застрял с FileSort на мой запросMySQL - избежать FileSort
EXPLAIN SELECT o.job_offerid
FROM job_offer AS o
WHERE o.status = 1
ORDER BY o.sequence ASC, o.active_updated_when DESC, o.created DESC
LIMIT 10;
Этот запрос использует правильный индекс, но стил использует FileSort. Выход из EXPLAIN:
select_type: SIMPLE
table: o
type: ref
possible_keys: status,status_sequence_active_updated_when_created
key: status_sequence_active_updated_when_created
key_len: 4
ref: const
rows: 15153
Extra: Using where; Using filesort
Тип столбцов:
статус INT (13), последовательность INT (13), active_updated_when (DateTime), созданный (DateTime)
Таблица MyISAM, MySQL версии 5.6.21
Я пытаюсь найти похожие вопросы о stackoverflow, но безуспешно.
Спасибо
Редактировать (добавить структуру таблицы без других столбцов):
CREATE TABLE `job_offer` (
`job_offerid` int(13) NOT NULL AUTO_INCREMENT,
`sequence` int(13) NOT NULL DEFAULT '0',
`created` datetime NOT NULL,
`status` int(13) NOT NULL DEFAULT '1',
`active_updated_when` datetime DEFAULT NULL,
PRIMARY KEY (`job_offerid`),
KEY `status` (`status`),
KEY `sequence` (`sequence`),
KEY `created` (`created`),
KEY `active_updated_when` (`active_updated_when`),
KEY `status_sequence_active_updated_when_created` (`status`,`sequence`,`active_updated_when`, `created`),
FULLTEXT KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Любые причины, по которым вы хотите избежать filesort? – rlanvin
Кроме того, предоставьте инструкцию create table с структурой индекса. – rlanvin
Это потому, что запрос медленный - 0,1 секунды –