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

Performances MySQL avec AUTO_INCREMENT sur une PRIMARY KEY

Les clés primaires sont souvent utilisées comme séquence dans laquelle les données sont réellement stockées. Si la clé primaire est incrémentée, les données sont simplement ajoutées. Si la clé primaire est aléatoire, cela signifierait que les données existantes doivent être déplacées pour placer la nouvelle ligne dans la séquence appropriée. Un index de base (sans clé primaire) a généralement un contenu beaucoup plus léger et peut être déplacé plus rapidement avec moins de surcharge.

Je sais que cela est vrai pour les autres SGBD ; Je me risquerais à deviner que MySQL fonctionne de la même manière à cet égard.

MISE À JOUR

Comme indiqué par @BillKarwin dans les commentaires ci-dessous, cette théorie ne serait pas vraie pour les tables MyISAM. En tant que théorie de suivi, je ferais référence à la réponse de @ KevinPostlewaite ci-dessous (qu'il a supprimée depuis), que le problème est le manque d'AUTO_INCREMENT sur une CLÉ PRIMAIRE - qui doit être unique. Avec AUTO_INCREMENT, il est plus facile de déterminer que les valeurs sont uniques car elles sont garanties incrémentielles. Avec des valeurs aléatoires, le parcours de l'index peut prendre un certain temps pour effectuer cette détermination.