Имеется таблица:CREATE TABLE ent_types (
etid int(11) NOT NULL auto_increment,
etypeid int(11) NOT NULL default '0',
is_main enum('0','1') NOT NULL default '0',
etype varchar(255) NOT NULL default '',
PRIMARY KEY (etid),
KEY etypeid (etypeid)
) TYPE=MyISAM;Вот запрос:
SELECT * FROM ent_types ORDER BY etypeid, etype;EXPLAIN дает такой результат:
+-----------+------+---------------+------+---------+------+------+----------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-----------+------+---------------+------+---------+------+------+----------------+
| ent_types | ALL | NULL | NULL | NULL | NULL | 57 | Using filesort |
+-----------+------+---------------+------+---------+------+------+----------------+Упрощает запрос -- сортировка по индексируемому полю
SELECT * FROM ent_types ORDER BY etypeid;EXPLAIN:
+-----------+------+---------------+------+---------+------+------+----------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-----------+------+---------------+------+---------+------+------+----------------+
| ent_types | ALL | NULL | NULL | NULL | NULL | 57 | Using filesort |
+-----------+------+---------------+------+---------+------+------+----------------+
ТО есть, то же самое.Делаем сортировку по первичному ключу:
SELECT * FROM ent_types ORDER BY etid;И EXPLAIN показывает то же самое.
Принудительно пытаюсь заставить использовать индекс
SELECT * FROM ent_types USE INDEX (primary) ORDER BY etid;Картина не меняется.
Как заставить MySQL использовать индекс для сортировки?
попробуй занести в таблицу несколько сот записей
>попробуй занести в таблицу несколько сот записейДействиетльно, Оптимизатор если записей мало считает, что простой перебор оптимальней.
Не знаю в чем дело но если сделать тип таблицы InnoDb все пашет
>Не знаю в чем дело но если сделать тип таблицы InnoDb все
>пашетInnoDB не желательно использовать.
Хотелось бы обойтись средствами MyISAM