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

MySQL - индекс с множество колони

Общото правило за индексите е да поставите един върху всяко поле, използвано в WHERE или JOIN клауза.

Като се има предвид това, има някои оптимизации, които можете да направите. Ако зНАЕТЕ че определена комбинация от полета е единствената, която някога ще бъде използвана в WHERE на конкретна таблица, тогава можете да създадете един ключ с много полета само за тези полета, напр.

INDEX (field1, field2, field5)

v.s.

INDEX (field1),
INDEX (field2),
INDEX (field5)

Индексът с много полета може да бъде по-ефективен в много случаи, вместо да се налага сканиране на множество индекси. Недостатъкът е, че индексът с множество полета може да се използва само ако въпросните полета действително се използват в клауза WHERE.

С вашите примерни заявки, тъй като element и field_id са и в трите индекса, може би е по-добре да ги разделите в техния собствен специален индекс. Ако това са променливи полета, тогава е по-добре да ги запазите като свой собствен специален индекс. напр. ако някога трябва да промените field_id в насипно състояние, БД трябва да актуализира 3 различни индекса, v.s. актуализиране само на един специален.

Но всичко се свежда до сравнителен анализ – тествайте вашата конкретна настройка с различни настройки на индекса и вижте коя се представя най-добре. Правилата са удобни, но не работят в 100% от времето.




  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 ID не започва от 0

  2. Предупреждение:mysqli_connect():(HY000/2002):Няма такъв файл или директория

  3. Как използвате клаузата WITH в MySQL?

  4. Използване на Union All и Order By в MySQL

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