Aside: MySQL Index Hinting

Hey there! I'm currently working on a CLI tool to deploy WordPress apps to DigitalOcean. Check it out! It's free and open source.

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 ;)

2 thoughts on “Aside: MySQL Index Hinting

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

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

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

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

Comments are closed.