Почему бы не расширить ответ, чтобы сразу сделать все совершенно прозрачным.
Если таблица имеет индекс из нескольких столбцов, любой крайний левый префикс индекса может использоваться оптимизатором для поиска строк. Например, если у вас есть индекс из трех столбцов на (col1, col2, col3)
, вы индексировали возможности поиска на (col1)
, (col1, col2)
и (col1, col2, col3)
.
MySQL не может использовать индекс, если столбцы не образуют крайний левый префикс индекса. Предположим, что у вас есть операторы SELECT, показанные здесь:
SELECT * FROM tbl_name WHERE col1=val1;
SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;
SELECT * FROM tbl_name WHERE col2=val2;
SELECT * FROM tbl_name WHERE col2=val2 AND col3=val3;
Если для (col1, col2, col3)
существует индекс, индекс используют только первые два запроса. Третий и четвертый запросы включают индексированные столбцы, но (col2)
и (col2, col3)
не являются самыми левыми префиксами (col1, col2, col3)
. - MySQL dev