Като правило, в индекс с няколко колони искате колоните с най-висока мощност или с други думи, най-голям брой различни стойности, да са на първо място в индекса.
За да бъдем по-точни, първо искате колоната с възможно най-малко съвпадения с критериите ви за търсене, за да можете да стесните набора от резултати доколкото е възможно, но като цяло това е същото като най-високата мощност.
Така че във вашия пример ще искате колоната, която ще има милиони различни стойности, да бъде в индекса преди тази с само 6 различни стойности.
Ако приемем, че избирате само един ред от милионите стойности, това ви позволява да елиминирате повече редове по-бързо.
Когато разглеждате две колони с подобна мощност, поставете първо по-малката (INTEGER
колони преди VARCHAR
колони), защото MySQL може да ги сравнява и преглежда по-бързо.
Едно предупреждение е, че ако избирате с диапазони (напр. WHERE datecol > NOW()
), тогава искате колоните за диапазона, които са най-отдалечени вдясно, и вашите колони с една константа (напр. WHERE id = 1
) наляво. Това е така, защото вашият индекс може да се използва само за търсене и подреждане до точката на първата стойност на диапазона.