it-swarm.com.ru

Как намекнуть индекс для использования в запросе выбора MySQL?

У меня есть запрос MySQL (работает под управлением MySQL 5.0.88), который я пытаюсь ускорить. Базовая таблица имеет несколько индексов, и для рассматриваемого запроса используется неправильный индекс (i_active - 16.000 строк, против i_iln - 7 строк).

Я не очень разбираюсь в MySQL, но прочитал, что есть подсказка use index, которая может заставить mySQL использовать определенный индекс. Я пытаюсь это так:

 SELECT art.firma USE INDEX (i_iln)
 ...

но это приводит к ошибке MySQL.

Вопрос :
Может кто-нибудь сказать мне, что я делаю не так? (За исключением запуска 5.0.88, который я не могу изменить.)

30
frequent

Вы пропустили FROM table

Правильный SQL должен быть: 

SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....

50
Raptor
select * from table use index (idx);

http://dev.mysql.com/doc/refman/5.0/en/index-hints.html

5
Markus Mikkolainen

иногда при использовании use index (index_name) оптимизатор может пойти на сканирование таблицы, если вы используете подсказку force index, оптимизатор будет вынужден использовать index, будет идти на сканирование таблицы, только если не осталось способов получить строки с указанным индексом.

SELECT art.firma FROM art FORCE INDEX (i_iln);

для более подробной информации о подсказках USE INDEX и FORCE INDEX проверьте это ссылка

0
MikA