Zunächst einmal ist es völlig in Ordnung diese Lücken haben. Es gibt kein Problem . Es ist nur Ihre Zwangsstörung, die Sie zu der Annahme zwingt, dass diese Zahlen einem Muster folgen müssen – das tun sie nicht.
auto_increment
ist kein PHP-Feature, sondern ein MySQL-Featureauto_increment
stellt sicher, dass jede Zeile ein Unikat erhält Nummer. Es behandelt keine fortlaufenden Nummernauto_increment
funktioniert sicher in einer gleichzeitigen Umgebung - das bedeutet, dass sich viele Benutzer mit MySQL verbinden und Dinge tun, und alle müssen in der Lage sein, mit der Datenbank umzugehen und nicht dieselbe ID zum Identifizieren einer Zeile zu erhalten. Dies geschieht durch einen ziemlich komplexen Prozess und dies ist einer der Gründe fürauto_increment
ergibt Lückenauto_increment
wird vonInnoDB
verwendet für die physische Organisation von Datensätzen auf der Festplatte - es verwendet die Funktion vonauto_increment
und dieser erzeugt eine Zahl, die größer als die vorherige ist (das ist, was es tut, größer als die vorherige, nicht sequentiell). Unter Verwendung dessen wird ein B-Baum konstruiert und Datensätze werden nacheinander auf die Festplatte geschrieben. Manipulation vonauto_increment
machtInnoDB
den Baum wieder ins Gleichgewicht bringen. Es bedeutet, dass es Datensätze durchgeht und den Index neu erstellt, wenn Sie damit herumspielen - das ist etwas, das Sie nicht wollen. Immer
Wenn Sie darüber nachdenken, was bekommen Sie überhaupt mit fortlaufenden Nummern? Nichts wirklich, außer dass dein Gehirn wahrscheinlich weniger schmerzt, weil es eine imaginäre Ordnung gibt.
Verwenden Sie für fortlaufende Nummern Trigger, um sie zu erstellen. auto_increment
hat einen Job und nur einen Job - um Unikate zu produzieren Nummern.