sql >> Databasteknik >  >> RDS >> Mysql

Kommer index att användas om du frågar en delmängd av indexets kolumner?

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.



  1. Letar efter motsvarigheten till dictcursor i flaskext.mysql

  2. RADIANS() Exempel i SQL Server

  3. Hur lägger jag en 'if-sats' i en SQL-sträng?

  4. Multiplikation av data från MySQL-raden