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_incrementer ikke en PHP-funktion, det er MySQL-funktionauto_incrementsikrer, at hver række får en unik nummer. Den beskæftiger sig ikke med sekventielle numreauto_incrementfungerer 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_incrementgiver hullerauto_incrementbruges afInnoDBtil fysisk organisering af poster på disk - den bruger funktionenauto_incrementog 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_incrementlaverInnoDBgenbalancere 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.