MySQL Index Hinting

Did you know that you can give a hint to MySQL on which index to use? It’s called Index Hint and can be part of a query where you feel MySQL is doing a wrong choice (although that’s quite unlikely these days.)

SELECT * FROM table1 USE INDEX (your_index)
    WHERE col1 = 1 AND col2 = 2 AND col3 = 3;

Where your_index is the name of the index you’d like to use for this query. You can supply several comma-separated indexes and MySQL will pick the one it thinks is best. Alternatively you can tell MySQL to IGNORE INDEX too! Do benchmark though before making the final decision ;)

About the author

Konstantin Kovshenin

WordPress Core Contributor, ex-Automattician, public speaker and consultant, enjoying life in Moscow. I blog about tech, WordPress and DevOps.

2 comments

  • Но, стоит заметить, что использование Index Hint это не самая лучшая практика, т.к.:

    1) Не поддерживается другими БД
    2) Не является "идеологически правильным" т.к. SQL – декларативный язык – описывает КАКИЕ данные ты хочешь получить, но не описывает КАК. А использование Index Hint как раз вносит часть КАК в запрос…

    • Сергей, согласен! Но если вдруг оказалось что с использованием другого индекса запрос стал проходить значительно быстрее, то почему бы и нет?

      А если бизнес построен на MySQL то переход к другим БД вряд ли кого волнует, а если и волнует то скорее нереляционные базы поэтому переписывать в любом случае придётся :) Спасибо за комментарий!