Em primeiro lugar, está completamente bem ter essas lacunas. Não há não há problema . É apenas o seu TOC que o força a pensar que esses números precisam seguir um padrão - eles NÃO.
auto_increment
não é um recurso PHP, é um recurso MySQLauto_increment
garante que cada linha tenha um único número. Não lida com números sequenciaisauto_increment
funciona com segurança em ambiente simultâneo - isso significa que há muitos usuários se conectando ao MySQL e fazendo coisas, e todos eles precisam lidar com o banco de dados e não obter o mesmo id para identificar uma linha. Isso é feito através de um processo bastante complexo e esta é uma das razões pelas quaisauto_increment
produz lacunasauto_increment
é usado peloInnoDB
para organização física de registros em disco - usa o recurso deauto_increment
e esse está produzindo um número maior que o anterior (é isso que ele faz, maior que o anterior, não sequencial). Usando isso, uma b-tree é construída e os registros são gravados em sequência no disco rígido. Violação deauto_increment
fazInnoDB
reequilibrar a árvore. Isso significa que ele passa pelos registros e recria o índice se você mexer nele - isso é algo que você não deseja. Sempre
Quando você pensa sobre isso, o que você consegue com números sequenciais? Nada realmente, exceto que seu cérebro provavelmente dói menos porque há alguma ordem imaginária.
Para números sequenciais, use gatilhos para criá-los.
auto_increment
tem um trabalho e apenas um trabalho - para produzir único números.