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_incrementist kein PHP-Feature, sondern ein MySQL-Featureauto_incrementstellt sicher, dass jede Zeile ein Unikat erhält Nummer. Es behandelt keine fortlaufenden Nummernauto_incrementfunktioniert 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_incrementergibt Lückenauto_incrementwird vonInnoDBverwendet für die physische Organisation von Datensätzen auf der Festplatte - es verwendet die Funktion vonauto_incrementund 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_incrementmachtInnoDBden 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.