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

Quand ajouter un index sur un champ de table SQL (MySQL) ?

Il n'est pas toujours clair où utiliser les index dans les tables SQL. Mais il existe quelques règles générales qui pourraient vous aider à décider dans la plupart des cas.

  1. Mettre un index sur les colonnes qui sont utilisées dans les clauses where
  2. Placez l'index sur les colonnes que vous utilisez pour joindre.
  3. Essayez de ne pas utiliser plus de 4 à 5 index sur les colonnes d'une même table.

Et les concepts généraux que vous devez garder à l'esprit sont :

  1. Tout index que vous utilisez accélérera les recherches sur ces colonnes.
  2. Tout index que vous ajoutez ralentit un peu l'insertion dans cette table.
  3. Parmi les deux précédents. Il est de votre responsabilité de décider du nombre d'insertions et de requêtes que vous effectuez sur les tables pour décider si vous souhaitez utiliser l'index et sur quelles colonnes ou non.

MODIFIER

Le commentaire de @AndrewLazarus est vraiment important et j'ai décidé de l'ajouter à la réponse :

  1. N'utilisez pas d'index sur des colonnes avec seulement quelques valeurs différentes. Par exemple, une colonne contenant un état, lorsqu'il n'y a que peu d'états, ou une valeur booléenne. La raison de ne pas le faire est que l'indice ne vous aide pas vraiment car il ne sera divisé que par le nombre de valeurs, et puisque vous n'en avez que quelques-unes, il n'y aura aucun avantage réel. La table consommerait plus d'espace avec l'index et la préforme plus lentes lors de l'insertion, mais vous n'obtiendrez pas de meilleures performances lors de l'interrogation