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_increment
säkerställer att varje rad får en unik siffra. Det handlar inte om sekventiella nummerauto_increment
fungerar 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_increment
ger luckorauto_increment
används avInnoDB
för fysisk organisation av poster på disk - den använder funktionenauto_increment
och 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_increment
görInnoDB
balansera 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.