@mississippi

Какой индекс всегда будет идти по порядку(после удаления строк)?

Недавно работаю с БД, неочень понимаю индексы, сейчас у меня в таблице индекс IDENTITY(1,1). Почему после удаления строк, id этих строк запоминаются и после не повторяются при добавлении новых записей, отсчет идет после последнего удаленного номера. Каким нужно задать индекс, чтобы такого не было?
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 3
@d-stream
Готовые решения - не подаю, но...
Простонародно - identity - это "база, обеспечь уникальность, мне пофиг как". То есть заморачиваться на предмет конкретных значений id в таком случае не только нежелательно, но и нельзя.
Ну и в общем-то ситуация с удалением последней или последних записей - достаточно экзотична. Вероятнее удаление будет "из середины".
Если же речь об очистке таблицы полностью - то лучше использовать truncate, которая заодно и сбросит identity
Ответ написан
Комментировать
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
после не повторяются при добавлении новых записей
Это нормальное поведение IDENTITY(1,1). Можно изменить получение ID. Зависит от предметной области. Лучше использовать отдельное поле "Номер". Вариантов получение непрерывной последовательности море: например, запоминать удалённые номера или вычислять их. В некоторых случаях, например, счёт-фактура — номера в хронологической последовательности в течение периода, достаточно использовать диапазон номеров.
Ответ написан
Комментировать
@mynigoo
identity всего лишь счётчик. Это свойство не ограничивает целостность (ключ) и не влияет на производительность запросов (индекс).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы