Musíte pochopit, že MySQL (v případě InnoDB) používá pouze předponu nejvíce vlevo z vašich indexů. Pokud je tedy index v Pole1 + Pole2, dotazování pouze pomocí Pole2 v KDE nemůže využít celý index.
A pokud Field1 + Field2 + Field3
je index, dotaz obsahující pouze Field1 & Field3
v WHERE stalo by se to samé.
Možnost 1
Pokud chcete optimalizovat každé vyhledávání, museli byste pro každý scénář vyhledávání vytvořit samostatný index. Pokud jsou však tabulky velké, indexy by byly také extrémně velké. Pokud jsou tyto vyhledávací dotazy zadávány velmi často, stálo by to za to.
Možnost 2
Pokud mají vaše vyhledávání nízkou selektivitu, můžete použít šikovný trik (tj. Pohlaví) tak, že sloupce s nízkou selektivitou dáte úplně vlevo a použijete Gender IN(M, F)
zahrnout jej do KDE klauzule spolu s ostatními sloupci, abyste využili celý index.