Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - index de plusieurs colonnes

La règle générale pour les index est d'en coller un sur n'importe quel champ utilisé dans un WHERE ou JOIN clause.

Cela étant dit, il y a quelques optimisations que vous pouvez faire. Si vous SAVEZ qu'une certaine combinaison de champs est la seule qui sera jamais utilisée dans WHERE sur une table particulière, alors vous pouvez créer une clé multi-champ unique sur ces champs, par exemple

INDEX (field1, field2, field5)

contre

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

Un index multi-champs peut être plus efficace dans de nombreux cas, par rapport à la nécessité de parcourir plusieurs index. L'inconvénient est que l'index multi-champs n'est utilisable que si les champs en question sont effectivement utilisés dans une clause WHERE.

Avec vos exemples de requêtes, depuis element et field_id sont dans les trois index, vous feriez peut-être mieux de les séparer dans leur propre index dédié. S'il s'agit de champs modifiables, il est préférable de conserver leur propre index dédié. par exemple. si jamais vous devez changer field_id en vrac, la base de données doit mettre à jour 3 index différents, v.s. mettre à jour un seul dédié.

Mais tout se résume à une analyse comparative - testez votre configuration particulière avec différentes configurations d'index et voyez laquelle fonctionne le mieux. Les règles empiriques sont pratiques, mais ne fonctionnent pas 100 % du temps.