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 ;)
Но, стоит заметить, что использование Index Hint это не самая лучшая практика, т.к.:
1) Не поддерживается другими БД
2) Не является "идеологически правильным" т.к. SQL – декларативный язык – описывает КАКИЕ данные ты хочешь получить, но не описывает КАК. А использование Index Hint как раз вносит часть КАК в запрос…
Сергей, согласен! Но если вдруг оказалось что с использованием другого индекса запрос стал проходить значительно быстрее, то почему бы и нет?
А если бизнес построен на MySQL то переход к другим БД вряд ли кого волнует, а если и волнует то скорее нереляционные базы поэтому переписывать в любом случае придётся :) Спасибо за комментарий!