Добрый день! Изучаю индексы. В литературе и интернете пишут, что при наличии многоколоночного индекса важен порядок в Where (левая часть индекса), иначе индекс может быть не использован вообще.
Пример, есть индекс abc.
Везде пишут такие примеры:
Select a from table where a=10, b= 20 - будет использовать индекс.
Select a from table where a=10 - будет использовать индекс.
Select a from table where b= 20 - НЕ будет использовать индекс.
Select a from table where a=10, с= 30 - будет использовать индекс но только по полю а.
Select a from table where b= 20, с=30 - НЕ будет использовать индекс.
Провожу эксперимент:
create table ind (
`id` int(3) not null auto_increment,
`a` varchar(32) not null,
`b` varchar(32) not null,
`c` varchar(32) not null,
primary key(`id`));
Создаем индекс
create index idx_abc on ind(a,b,c);
Запрос:
explain select a from ind where c='test4'\G;
В результате explain поясняет, что использован индекс для запроса, хотя по идее не должен
id: 1
select_type: SIMPLE
table: ind
partitions: NULL
type: index
possible_keys: NULL
key: idx_abc
key_len: 294
ref: NULL
rows: 7
filtered: 14.29
Extra: Using where; Using index
Вопрос: важен ли порядок столбцов в индексе при поиске при поиске Where?