Как заменить все непоследовательные идентификаторы GUID последовательными? - PullRequest
1 голос
/ 19 июня 2009

У меня есть база данных SQL Server 2005 с коричневыми полями, которая использует стандартные несортированные идентификаторы GUID в качестве большинства значений первичных ключей, а также в кластерных индексах (что отрицательно сказывается на производительности).

Как мне изменить их на последовательные идентификаторы GUID? Одной из проблем будет замена всех значений внешнего ключа при изменении каждого первичного ключа.

Вам известны какие-либо инструменты или сценарии для выполнения этого типа преобразования?

Ответы [ 3 ]

5 голосов
/ 19 июня 2009

помните, что вы можете использовать только функцию newsequentialid () по умолчанию

, поэтому создайте новую таблицу с 2 столбцами. Вставьте ключ от вашей исходной таблицы в эту (оставьте другой столбец заполненным)

присоединиться к исходной таблице и обновить PK с помощью newsequantialid, если у вас есть каскадное обновление, FK должны обновить сами

0 голосов
/ 28 ноября 2012

SequentialGuids лучше всего подходят для производительности, когда Guid - это PK. Это причина их существования.

0 голосов
/ 19 июня 2009

Откуда ты знаешь, что это плохо для производительности?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...