Ответ 1
Вы пропустили FROM table
Правильный SQL должен быть:
SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....
У меня есть запрос 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, которую я не могу изменить.)
Вы пропустили FROM table
Правильный SQL должен быть:
SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....
select * from table use index (idx);
иногда с использованием index (index_name) оптимизатор может пойти на сканирование таблицы, если вы используете индекс принудительной подсказки, оптимизатор будет вынужден использовать index, будет идти на сканирование таблицы, только если не осталось способов получить строки с предоставленным индексом.
SELECT art.firma FROM art FORCE INDEX (i_iln);
для более подробной информации о подсказках USE INDEX и FORCE INDEX проверьте эту ссылку
Выберите Coloumn1, Coloumn2, Coloumn.... FROM TABLE_NAME ИНДЕКС ПОЛЬЗОВАТЕЛЯ (имя_индекса) ГДЕ Coloumn = "condition";
Если у вас есть правильный индекс, вам не нужно использовать index(). ваш запрос автоматически выбирает правильный index.If ваш запрос медленно после использования индекса thn перепроверять ваш индекс, что-то не так в индексе. спасибо заранее.центр здесь