Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да гарантираме, че няма пропуски в числата на auto_increment?

Първо, това е напълно наред да има тези пропуски. Няма проблеми . Просто вашето ОКР ви принуждава да мислите, че тези числа трябва да следват модел - НЕ.

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

Като се замислите, какво изобщо получавате с последователните номера? Всъщност нищо, освен че мозъкът ви вероятно боли по-малко, защото има някакъв въображаем ред.

За последователни номера използвайте тригери, за да ги създадете. auto_increment има една работа и само една работа - да произвеждауникални числа.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте таблица с имена на колони, получени от стойности на редове на друга таблица

  2. PHP Обърнете реда на резултатите от MySQL DB

  3. Функцията за създаване на MySQL няма да върне набори

  4. Как да изберете данни от множество таблици, използвайки правилно обединения/подзаявка? (PHP-MySQL)

  5. Как да предадете стойност на база данни в хипервръзка с помощта на PHP + HTML