
SQL
Автоинкремент - всего лишь поле в служебной таблице, содержащей информацию о пользовательских таблицах БД, которое автоматически увеличивается на 1 при обращении к нему - независимо от того, будет использовано это значение или нет. Механизм максимально быстрый и потому предельно простой.
Смысл автоинкремента не в том, чтобы было подряд, а в том, чтобы у каждой записи таблицы было уникальное значение первичного ключа. И даже если запись была удалена из таблицы, чтобы ключ удалённой записи никогда в этой таблице не появился снова.
Почему id в бд идут не по порядку, при том что ни один из них не разу не удался?

- Потому, что любая попытка вставки новой записи приводит к генерации нового значения - даже если вставка не произошла (сработало IGNORE или завершилась ошибкой).
- Потому, что выполнение REPLACE создаёт новую запись с новым ключом - удаляя предыдущий экземпляр из таблицы.
- И, да: хоть в этой таблице и не удалялось, но в общем случае это тоже причина.
Автоинкремент - всего лишь поле в служебной таблице, содержащей информацию о пользовательских таблицах БД, которое автоматически увеличивается на 1 при обращении к нему - независимо от того, будет использовано это значение или нет. Механизм максимально быстрый и потому предельно простой.
Смысл автоинкремента не в том, чтобы было подряд, а в том, чтобы у каждой записи таблицы было уникальное значение первичного ключа. И даже если запись была удалена из таблицы, чтобы ключ удалённой записи никогда в этой таблице не появился снова.
если почитаешь документацию СУБД на автоинкременты/sequences, то обнаружишь, что они принципиально не гарантируют непрерывности. только уникальность. иными словами, если создашь пустую таблицу и зальешь в нее, скажем, 100k строк, не проводя более никаких операций, с высокой вероятностью в последовательности будут разрывы.
почему так? основная причина, полагаю, в асинхронности. возможно, также причина есть в математическом обосновании реляционных баз данных, но это копай сам. :)
почему так? основная причина, полагаю, в асинхронности. возможно, также причина есть в математическом обосновании реляционных баз данных, но это копай сам. :)
судя по скрину они идут по порядку, от меньшего к большему...
просто "порядки" у каждого свои :)
просто "порядки" у каждого свои :)
Это особенности работы каждой СУБД.
Удаляются строки и заполняются уже пустые места хаотично, по ситуации.
Иначе упала бы скорость работы при выборке.
Удаляются строки и заполняются уже пустые места хаотично, по ситуации.
Иначе упала бы скорость работы при выборке.
Евгений Гайденрайх
В каком смысле удаляются строки?
Похожие вопросы
- Выполнение вложенного запроса в БД. Скалярные запросы.
- Как реализовать архитектуру БД?
- Инфологическая модель БД
- Помогите Зелёному! Как наладить проверку БД на полноту новых записей
- Принцип БД для поиска из 3 млрд строк.
- Блин что то не могу найти способ произвести эффективную выборку данных из таблицы БД?
- Вывод данных из бд в dataview?
- Как в бд сверять прошло ли определённое время (К примеру 24ч.) после указаной даты в базе?
- Вопрос по SQL - уникальное поле ID для трёх таблиц (нельзя вставить значения в одну, если оно есть в другой таблице).
- Как хостинг с бд взять? с удобным дизайном?