Tout d'abord, c'est tout à fait bien avoir ces lacunes. Il n'y a pas de problème . C'est juste votre TOC qui vous oblige à penser que ces chiffres doivent suivre un modèle - ils NE LE FONT PAS.
auto_increment
n'est pas une fonctionnalité PHP, c'est une fonctionnalité MySQLauto_increment
garantit que chaque ligne obtient un unique Numéro. Il ne traite pas les numéros séquentielsauto_increment
fonctionne en toute sécurité dans un environnement concurrent - cela signifie qu'il y a beaucoup d'utilisateurs qui se connectent à MySQL et font des choses, et tous doivent être capables de gérer la base de données et de ne pas obtenir le même identifiant pour identifier une ligne. Cela se fait par un processus assez complexe et c'est l'une des raisons pour lesquellesauto_increment
donne des lacunesauto_increment
est utilisé parInnoDB
pour l'organisation physique des enregistrements sur le disque - il utilise la fonctionnalitéauto_increment
et celui-ci produit un nombre plus grand que le précédent (c'est ce qu'il fait, plus grand que le précédent, pas séquentiel). Grâce à cela, un b-tree est construit et les enregistrements sont écrits en séquence sur le disque dur. Altération deauto_increment
rendInnoDB
rééquilibrer l'arbre. Cela signifie qu'il parcourt les enregistrements et recrée l'index si vous le dérangez - c'est quelque chose que vous ne voulez pas. Jamais
Quand vous y réfléchissez, qu'obtenez-vous même avec des nombres séquentiels ? Rien vraiment, sauf que votre cerveau vous fait probablement moins mal parce qu'il y a un ordre imaginaire.
Pour les numéros séquentiels, utilisez des déclencheurs pour les créer. auto_increment
a un travail et un seul travail - pour produire unique nombres.