URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 2589
[ Назад ]

Исходное сообщение
"Оптимизация MySQL-запроса"

Отправлено zenon , 20-Авг-04 16:46 
Имеется таблица:

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 использовать индекс для сортировки?


Содержание

Сообщения в этом обсуждении
"Оптимизация MySQL-запроса"
Отправлено HellCAT , 21-Авг-04 12:43 
попробуй занести в таблицу несколько сот записей

"Оптимизация MySQL-запроса"
Отправлено uldus , 23-Авг-04 11:33 
>попробуй занести в таблицу несколько сот записей

Действиетльно, Оптимизатор если записей мало считает, что простой перебор оптимальней.


"Оптимизация MySQL-запроса"
Отправлено HellCAT , 21-Авг-04 13:12 
Не знаю в чем дело но если сделать тип таблицы InnoDb все пашет

"Оптимизация MySQL-запроса"
Отправлено zenon , 21-Авг-04 15:49 
>Не знаю в чем дело но если сделать тип таблицы InnoDb все
>пашет

InnoDB не желательно использовать.
Хотелось бы обойтись средствами MyISAM