Devi capire che in MySQL (nel caso di InnoDB) utilizza solo il prefisso più a sinistra dei tuoi indici. Quindi, se l'indice è in Field1 + Field2, interrogando solo Field2 in WHERE non può utilizzare l'intero indice.
E se Field1 + Field2 + Field3
è l'indice, una query con solo Field1 & Field3
in DOVE lo stesso accadrebbe.
Opzione 1
Dovresti creare un indice separato per ogni scenario di ricerca se desideri ottimizzare ogni ricerca. Tuttavia, se le tabelle sono grandi, anche gli indici diventeranno estremamente grandi. Se queste query di ricerca vengono eseguite molto spesso, ne varrebbe la pena.
Opzione 2
Puoi usare un trucco ingegnoso se le tue ricerche hanno una bassa selettività (es. Sesso) mettendo le colonne di bassa selettività più a sinistra e usa Gender IN(M, F)
per includerlo in WHERE clausola insieme alle altre colonne per utilizzare l'intero indice.