Du skal forstå, at MySQL (i tilfælde af InnoDB) kun bruger det venstre præfiks af dine indekser. Så hvis indekset er i felt1 + felt2, forespørges der kun med felt2 i Hvor kan ikke gøre brug af hele indekset.
Og hvis Field1 + Field2 + Field3
er indekset, en forespørgsel med kun Field1 & Field3
i Hvor det samme ville ske.
Mulighed 1
Du skal oprette et separat indeks for hvert søgescenarie, hvis du vil optimere hver søgning. Men hvis tabellerne er store, vil indeksene også blive ekstremt store. Hvis disse søgeforespørgsler foretages meget ofte, ville det være det værd.
Mulighed 2
Du kan bruge et smart trick, hvis dine søgninger har en lav selektivitet (dvs. køn) ved at placere kolonnerne med lav selektivitet til venstre mest og bruge Gender IN(M, F)
for at inkludere det i Hvor klausul sammen med de andre kolonne(r) for at gøre brug af hele indekset.