Задать вопрос
@mississippi

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

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

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

Похожие вопросы
ITK academy Казань
от 75 000 до 130 000 ₽
ITK academy Нижний Новгород
от 75 000 до 120 000 ₽
Data World Москва
от 180 000 до 210 000 ₽