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

Ordre d'indexation composite InnoDB et performances INSERT

(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.