Du måste förstå i MySQL (när det gäller InnoDB) att det bara använder prefixet längst till vänster av dina index. Så om indexet finns i Fält1 + Fält2, fråga med endast Fält2 i VAR kan inte använda hela indexet.
Och om Field1 + Field2 + Field3
är indexet, en fråga med endast Field1 & Field3
i VAR samma sak skulle hända.
Alternativ 1
Du måste skapa ett separat index för varje sökscenario om du vill optimera varje sökning. Men om tabellerna är stora, skulle indexen också bli extremt stora. Om dessa sökfrågor görs väldigt ofta skulle det vara värt det.
Alternativ 2
Du kan använda ett smart knep om dina sökningar har en låg selektivitet (dvs. Kön) genom att placera kolumnerna med låg selektivitet längst till vänster och använda Gender IN(M, F)
för att inkludera det i VAR sats tillsammans med de andra kolumnerna för att använda hela indexet.