Първо, това е напълно наред да има тези пропуски. Няма проблеми . Просто вашето ОКР ви принуждава да мислите, че тези числа трябва да следват модел - НЕ.
auto_increment
не е функция на PHP, това е функция на MySQLauto_increment
гарантира, че всеки ред получава уникален номер. Не се занимава с последователни номераauto_increment
работи безопасно в едновременна среда - това означава, че има много потребители, които се свързват с MySQL и правят неща, и всички те трябва да могат да се справят с базата данни и да не получават същия идентификатор за идентифициране на ред. Това се прави чрез доста сложен процес и това е една от причинитеauto_increment
дава пропускиauto_increment
се използва отInnoDB
за физическа организация на записите на диска - използва функциятаauto_increment
и този произвежда число, което е по-голямо от предишното (това прави, по-голямо от предишното, а не последователно). Използвайки това, се изгражда b-дърво и записи се записват последователно на твърдия диск. Подправяне наauto_increment
правиInnoDB
балансирайте дървото. Това означава, че преминава през записи и пресъздава индекса, ако се забъркате с него - това е нещо, което не искате. Някога
Като се замислите, какво изобщо получавате с последователните номера? Всъщност нищо, освен че мозъкът ви вероятно боли по-малко, защото има някакъв въображаем ред.
За последователни номера използвайте тригери, за да ги създадете. auto_increment
има една работа и само една работа - да произвеждауникални числа.