För det första är det helt bra att ha dessa luckor. Det är inga problem . Det är bara din tvångssyndrom som tvingar dig att tro att dessa siffror måste följa ett mönster – det gör de INTE.
auto_incrementär inte en PHP-funktion, det är MySQL-funktionauto_incrementsäkerställer att varje rad får en unik siffra. Det handlar inte om sekventiella nummerauto_incrementfungerar säkert i samtidig miljö - det betyder att det finns många användare som ansluter till MySQL och gör saker, och alla måste kunna hantera databasen och inte få samma ID för att identifiera en rad. Detta görs genom en ganska komplex process och detta är en av anledningarna till attauto_incrementger luckorauto_incrementanvänds avInnoDBför fysisk organisation av poster på disk - den använder funktionenauto_incrementoch att man producerar ett tal som är större än tidigare (det är vad det gör, större än tidigare, inte sekventiellt). Med hjälp av detta konstrueras ett b-träd och poster skrivs i sekvens på hårddisken. Ändra medauto_incrementgörInnoDBbalansera om trädet. Det betyder att den går igenom poster och återskapar indexet om du bråkar med det - det är något du inte vill ha. Någonsin
När du tänker efter, vad får du ens med sekventiella nummer? Ingenting egentligen, förutom att din hjärna förmodligen gör mindre ont eftersom det finns en imaginär ordning.
För sekventiella nummer, använd triggers för att skapa dem. auto_increment har ett jobb och bara ett jobb - att producera unik siffror.