Вопрос по sql, hint, mysql, indexing – Как намекнуть индекс для использования в запросе выбора MySQL?

30

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

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

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

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

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

Что бы ни стоило, USE INDEX не принуждает использовать указанный индекс. Это просто означает, что не стоит использоватьother Индекс & Quot. Указанный вами индекс может не относиться к запросу, и в этом случае MySQL все равно не будет его использовать. Bill Karwin

Ваш Ответ

4   ответа
0

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

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

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

-1

Select Coloumn1,Coloumn2,Coloumn.... FROM TABLE_NAME USE INDEX(index_name) WHERE Coloumn="condition";

если у вас правильный индекс, то вам не нужно использовать index (). Ваш запрос автоматически выбирает правильный индекс. Если ваш запрос медленный после использования индекса, перепроверьте свой индекс, что-то не так в индексе. заранее спасибо. введите код здесь

Добро пожаловать в ТАК. Пожалуйста прочтите этоhow-to-answer и следуйте указаниям там, чтобы обеспечить качественный ответ.
Ваш ответ выиграет от некоторого редактирования в сторону читабельности, некоторого форматирования и некоторого удаления фрагментов текста, которые выглядят как неиспользуемые заполнители шаблонов.
50

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

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

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

ах ... 2100мс до 0мс. Здорово! frequent
5
select * from table use index (idx);

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

Похожие вопросы