Mysql
 sql >> база данни >  >> RDS >> Mysql

Има ли оптимален метод за поръчка на композитен индекс на MySQL?

Като правило, в индекс с няколко колони искате колоните с най-висока мощност или с други думи, най-голям брой различни стойности, да са на първо място в индекса.

За да бъдем по-точни, първо искате колоната с възможно най-малко съвпадения с критериите ви за търсене, за да можете да стесните набора от резултати доколкото е възможно, но като цяло това е същото като най-високата мощност.

Така че във вашия пример ще искате колоната, която ще има милиони различни стойности, да бъде в индекса преди тази с само 6 различни стойности.

Ако приемем, че избирате само един ред от милионите стойности, това ви позволява да елиминирате повече редове по-бързо.

Когато разглеждате две колони с подобна мощност, поставете първо по-малката (INTEGER колони преди VARCHAR колони), защото MySQL може да ги сравнява и преглежда по-бързо.

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранени неанглийски знаци, получих '?????' - Проблем с набора от символи в MySQL

  2. SQL SERVER 2016 – Сравняване на планове за изпълнение

  3. Масивът за извличане на MySQL добавя дублиращи се стойности?

  4. Заключване на MySQL база данни, така че само един човек наведнъж може да изпълнява заявка?

  5. Име на таблицата за чувствителност на малки и малки букви на MySQL в MacOS с файлова система без значение