Это проблема производительности, чтобы начать добавлять последовательные идентификаторы GUID в таблицу с непоследовательными идентификаторами GUID - PullRequest
0 голосов
/ 06 марта 2020

У меня есть таблицы с типом uniqueidentifier первичного ключа и я добавляю непоследовательные идентификаторы, теперь я хочу просто начать добавлять только последовательные идентификаторы в эти таблицы. Генерация guid производится в коде. Возможно ли это создать проблемы в индексах предыдущих данных. Логически я не вижу никаких проблем, но я не могу найти информацию о случаях, подобных этому.

PS Это устаревший проект. Я не могу обновить все предыдущие первичные ключи в таблице до последовательных, потому что нет никаких связей с внешним ключом, и в других таблицах начнутся несовпадения.

1 Ответ

2 голосов
/ 06 марта 2020

Прежде всего, я могу дать вам образованный ответ:

  • Если первый созданный вами последовательный гид больше, чем последний, вставленный в вашу таблицу, вы можете быть уверены, что последующие последовательные направляющие, которые вы вставите, не вызовут проблем с индексацией так как они последовательные! Чтобы добиться этого, вы можете обойти и создать первый SequentialGuid для каждой таблицы таким образом, чтобы он был больше, чем последний вставленный непоследовательный guid в этой таблице, передав последний вставленный непоследовательный guid в ваш метод создателя Sequentialguid. Вы можете найти библиотеку в этой ссылке , которая позволяет создавать SequentialGuid с lastId в качестве базового значения.

  • Кроме того, имейте в виду, что порядок последовательных направляющих может быть изменен в случае перезагрузки сервера. Итак, SequentialGuids не являются надежными с этой точки зрения.

Наконец, если это применимо к вашему делу, я бы предложил вам еще лучшее решение:

  • Вы можете изменить свои таблицы, добавив поле целого Identity в качестве Clustered-index и оставив свое поле Guid как НО в качестве поля первичного ключа NonClustered-Index.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...