Трябва да разберете в MySQL (в случая на InnoDB) той използва само най-левия префикс на вашите индекси. Така че, ако индексът е в поле 1 + поле 2, заявка само с поле 2 в КЪДЕ не може да използва целия индекс.
И ако Field1 + Field2 + Field3
е индексът, заявка само с Field1 & Field3
в КЪДЕ същото ще се случи.
Опция 1
Ще трябва да създадете отделен индекс за всеки сценарий на търсене, ако искате да оптимизирате всяко търсене. Въпреки това, ако таблиците са големи, тогава индексите също ще станат изключително големи. Ако тези заявки за търсене се правят много често, това би си струвало.
Вариант 2
Можете да използвате страхотен трик, ако вашите търсения имат ниска селективност (т.е. пол), като поставите колоните с ниска селективност най-вляво и използвате Gender IN(M, F)
за да го включите в КЪДЕ клауза заедно с друга колона(и), за да се използва целият индекс.