(Remarque :cette réponse clarifie ou n'est pas d'accord avec certains des commentaires déjà écrits.)
DELETEs
sont ralentis en raison de la suppression des entrées d'index. UPDATEs
peut être ralenti -- cela dépend si une colonne indexée est modifiée.
SELECTs
, UPDATEs
, et DELETEs
, mais pas les INSERTs
, besoin de trouver la ou les lignes ; pour cela, un index peut aider beaucoup.
Un INSERT
est blessé d'un montant supplémentaire s'il y a un UNIQUE
index à vérifier.
Clés secondaires (dans InnoDB), sauf pour UNIQUE
clés, sont mises à jour (généralement en raison de INSERTs
et DELETEs
, mais peut-être à cause de UPDATE
) de manière "différée" via ce qu'on appelle le "Change Buffer". Cela retarde efficacement la mise à jour de l'index, mais maintient l'index entièrement utilisable.
Rien de tout cela n'est impacté par l'ordre des colonnes dans un index. Cependant, si un index est plus grand qu'il ne peut être mis en cache dans la RAM, la "mise en cache" entre en jeu et les E/S peuvent ou non être impliquées. Mais c'est un autre sujet.
En général, l'avantage à partir d'un indice de lecture l'emporte de loin le ralentissement des opérations d'écriture.