У меня есть таблица, содержащая 250 миллионов записей, записывающих людей, которые живут в США и их окружении, округе и поселке. Упрощенная версия выглядит следующим образом:Использование индексов в нескольких столбцах
Я поставил комбинированный индекс по фамилии, региона, субрегиона и место. Следующие запросы выполняются в точности то же самое время:
SELECT SQL_NO_CACHE surname, place, count(*) as cnt FROM `ustest` group by place, surname;
SELECT SQL_NO_CACHE surname, region, count(*) as cnt FROM `ustest` group by region, surname;
Я был под впечатлением, что первый запрос не будет использовать индекс, как я думал, что использовать индекс вы должны были запросить на все столбцы слева направо.
Может ли кто-нибудь объяснить, как MySQL использует индексы в нескольких столбцах в таких случаях?
Я бы предположил, что при отсутствии более конкретных индексов он использует ваш индекс с большим размером. Я не знаю, просто образованная догадка. –