Возможно ли повторение NEWSEQUENTIALID() с NewId()?

Раньше у меня была таблица с данными около 1000 Вт, тип данных столбца первичного ключа — uniqueidentifier, а значение по умолчанию — Newid(). Теперь есть проблема с производительностью, и я хочу изменить значение по умолчанию на NEWSEQUENTIALID().

Может ли идентификатор GUID, созданный NEWSEQUENTIALID(), дублировать ранее сохраненные данные (ранее созданные NewId())?


person L.Tim    schedule 23.07.2020    source источник
comment
stackoverflow.com/help/someone-answers   -  person Peter Duniho    schedule 23.07.2020
comment
Имейте в виду, что newsequentialid() создает значения, превышающие любой GUID, ранее сгенерированный этой функцией на указанном компьютере с момента запуска Windows. При перезапуске ОС вы получите новое начальное значение, которое может быть ниже предыдущего, что приведет к фрагментации индекса. См. это обсуждение. Кроме того, в нем конкретно упоминаются окна - не уверен, как это ведет себя в Linux.   -  person Bill Jetzer    schedule 23.07.2020


Ответы (1)


NEWSEQUENTIALID эффективно создает UUID версии 1.

NEWID создает UUID версии 4.

Хотя NEWSEQUENTIALID применяет некоторые шифрование байтов, он оставляет часть версии нетронутой. Это означает, что нет никаких шансов на коллизию между NEWSEQUENTIALID созданным guid и NEWID.

person Damien_The_Unbeliever    schedule 23.07.2020