For det første er det fuldstændig i orden at have disse huller. Der er intet problem . Det er bare din OCD, der tvinger dig til at tro, at disse tal skal følge et mønster – det gør de IKKE.
auto_increment
er ikke en PHP-funktion, det er MySQL-funktionauto_increment
sikrer, at hver række får en unik nummer. Den beskæftiger sig ikke med sekventielle numreauto_increment
fungerer sikkert i et samtidig miljø - det betyder, at der er mange brugere, der forbinder til MySQL og laver ting, og alle skal være i stand til at håndtere databasen og ikke få det samme id for at identificere en række. Dette gøres gennem en ret kompleks proces, og dette er en af grundene til, atauto_increment
giver hullerauto_increment
bruges afInnoDB
til fysisk organisering af poster på disk - den bruger funktionenauto_increment
og at man producerer et tal, der er større end tidligere (det er, hvad det gør, større end tidligere, ikke sekventielt). Ved hjælp af dette konstrueres et b-træ, og poster skrives i rækkefølge på harddisken. Ændring afauto_increment
laverInnoDB
genbalancere træet. Det betyder, at den går gennem poster og genskaber indekset, hvis du roder med det - det er noget, du ikke ønsker. nogensinde
Når du tænker over det, hvad får du så med sekventielle numre? Ikke rigtig noget, bortset fra at din hjerne sandsynligvis gør mindre ondt, fordi der er en imaginær orden.
For sekventielle numre skal du bruge triggere til at oprette dem. auto_increment
har ét job og kun ét job - at producere unik tal.