Как убрать пропуски из-за скачка столбца идентификации в SQL Server 2017? - PullRequest
0 голосов
/ 13 июля 2020

Я использую SQL Сервер с ASP. NET Core и EF Core. После добавления каждой записи значение столбца идентификаторов увеличивается примерно на 1000 и создает разрыв между текущей строкой и последней добавленной ранее строкой.

Вопросы

  • Есть ли какие-либо способ предотвратить это?

  • Как удалить те пробелы, которые были созданы ранее?

  • Если я использую GUID для ключевых столбцов, чтобы предотвратить это проблема, есть ли проблема (проблема с производительностью или друг с другом)?

  • Может ли на стороне сервера с EF Core справиться с этим (каждый по-своему)?

Заранее благодарю за помощь ...

1 Ответ

3 голосов
/ 13 июля 2020

Причину пробелов в 1000 значений см. Ответ Аарона Бертрана

На самом деле нет смысла «хотеть» удалить пробелы. Содержимое столбца идентичности не содержит информации semanti c. Он не коррелирует ни с чем «в мире» вне базы данных. Пробелы так же бессмысленны, как и сами значения.

Я не понимаю, как uniqueidentifier может «предотвратить» эту проблему. Уникальный идентификатор может быть «осмысленно» сортируемым (если вы используете newsequentialid()), но нет никакого смысла в том, чтобы какое-либо конкретное значение было «на одно больше», чем предыдущее значение.

Вы, конечно, можете попробовать создать свой алгоритм генерации ключей, который не создает пропусков, но вы столкнетесь с проблемами параллелизма (также упомянутыми г-ном Бертраном).

...