MySQL-dokumentationen gör ett bra jobb med att förklara hur index med flera kolumner fungerar här .
I allmänhet kan indexet användas för en where
sats när ett antal kolumner längst till vänster sidan av indexet har jämställdhetsvillkor. Din where
satser använder följande kolumner:
- c1, c2
- c1, c2, c3, c4
- c1, c2
- c1, c2, c5
Alla index som börjar med kolumner c1
och c2
skulle normalt användas för dessa frågor. MySQL kan tillämpa andra villkor för att använda indexet, såsom selektivitet. Det vill säga om c1
och c2
har konstanta värden (till exempel) så kommer användningen av ett index inte att gynna frågan.
För att optimera alla dessa kombinationer kan du skapa två index:c1, c2, c3, c4
och c2, c1, c5
. Anledningen till att byta c1
och c2
i det andra indexet är så att du kunde hantera frågor där villkoret är på c2
men inte c1
, såväl som det omvända.