Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Leistung mit AUTO_INCREMENT auf einem PRIMARY KEY

Primärschlüssel werden oft als Reihenfolge verwendet, in der die Daten tatsächlich gespeichert werden. Wenn der Primärschlüssel erhöht wird, werden die Daten einfach angehängt. Wenn der Primärschlüssel zufällig ist, würde dies bedeuten, dass vorhandene Daten verschoben werden müssen, um die neue Zeile in die richtige Reihenfolge zu bringen. Ein einfacher (Nicht-Primärschlüssel-)Index ist in der Regel inhaltlich viel leichter und kann mit weniger Overhead schneller verschoben werden.

Ich weiß, dass dies für andere DBMS gilt; Ich wage zu vermuten, dass MySQL in dieser Hinsicht ähnlich funktioniert.

AKTUALISIEREN

Wie von @BillKarwin in den Kommentaren unten angegeben, würde diese Theorie für MyISAM-Tabellen nicht gelten. Als Folgetheorie verweise ich auf die Antwort von @KevinPostlewaite unten (die er seitdem gelöscht hat), dass das Problem das Fehlen von AUTO_INCREMENT auf einem PRIMARY KEY ist - der eindeutig sein muss. Mit AUTO_INCREMENT ist es einfacher festzustellen, dass die Werte eindeutig sind, da sie garantiert inkrementell sind. Bei zufälligen Werten kann es einige Zeit dauern, den Index tatsächlich zu durchlaufen, um diese Bestimmung vorzunehmen.