Индексният ред има значение, когато условията на вашата заявка се отнасят само за ЧАСТ на индекса. Помислете за:
-
SELECT * FROM table WHERE first_name="john" AND last_name="doe" -
SELECT * FROM table WHERE first_name="john" -
SELECT * FROM table WHERE last_name="doe"
Ако вашият индекс е (first_name , last_name ) заявки 1 и 2 ще го използват, заявка #3 няма. Ако вашият индекс е (last_name , first_name ) заявки 1 и 3 ще го използват, заявка №2 няма. Промяната на реда на условието в клаузата WHERE няма ефект и в двата случая.
Подробности са тук
Актуализиране :
В случай, че горното не е ясно - MySQL може да използва индекс само ако колоните в условията на заявка образуват най-левия префикс на индекса. Заявка №2 по-горе не може да използва (last_name , first_name ) индекс, защото се основава само на first_name и first_name НЕ е най-левият префикс на (last_name , first_name ) индекс.
Редът на условията В рамките на заявката няма значение; заявка №1 по-горе ще може да използва (last_name , first_name ) индекс е добре, защото условията му са first_name и last_name и, взети заедно, те образуват най-лявата префикса на (last_name , first_name ) индекс.