Réponse courte :
Les index accélèrent SELECT
et ralentissez INSERT
's.
Habituellement, il est préférable d'avoir des index, car ils accélèrent select
plus qu'ils ne ralentissent insert
.
Sur une UPDATE
l'index peut accélérer les choses vers le haut si un champ indexé est utilisé dans le WHERE
clause et ralentissez les choses si vous update
l'un des champs indexés.
Comment savoir quand utiliser un index
Ajouter EXPLAIN
devant votre SELECT
déclaration.
Comme ceci :
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
Vous montrera combien de travail MySQL devra faire sur chacun des champs non indexés.
Utilisation ces informations, vous pouvez décider s'il vaut la peine d'ajouter des index ou non.
Expliquer peut également vous dire s'il est préférable de supprimer et d'indexer
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
Si très peu de lignes sont sélectionnées ou que MySQL a décidé de ignorer l'index (ça fait ça de temps en temps) alors autant supprimer l'index, car il est ralentir votre insert
s mais n'accélérant pas votre select
s.
Là encore, il se peut aussi que votre instruction select ne soit pas assez intelligente.
(Désolé pour la complexité de la réponse, j'essayais de rester simple, mais j'ai échoué).
Lien :
Index MySQL - que sont les bonnes pratiques ?