powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / uniqueidentifier как первичный ключ
5 сообщений из 5, страница 1 из 1
uniqueidentifier как первичный ключ
    #32027034
SeregaA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, All

Есть ли у кого опыт использования в качастве первичного ключа таблицы поле типа uniqueidentifier. У нас создается распределенная база, (~40 merge pull подписчиков), и я предвижу проблемы с пересекающимися PK, и поле типа uniqueidentifier default NEWID() меня бы избавило от этой проблемы. Хотелось бы услышать (увидеть) комментарии по поводу быстродействия JOIN-ов по таким ключам, и узнать что я найду, и что потеряю, используя subj.

Спасибо.
...
Рейтинг: 0 / 0
uniqueidentifier как первичный ключ
    #32027054
3.14_d'or
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Плюсы:

1. Можно явно указать ID при вставке (отличие от int identity), что снимает проблемы с получением ID только что вставленной записи на корню
2. Нет пересечения по ID с другими записями (не было ни разу)
3. Нет возможности угадать следующий ID (актуально для int identity) имея на руках некий
4. Для репликации плюс...

Минус:

1. Дольше запросы. Но на 1.000.000 записей join двух таблиц по UNIQUEIDENTIFIER проходит практически также, как и на int.
Числа не приведу, но тест делал...
2. Больше места под хранение

Вот такие дела.
...
Рейтинг: 0 / 0
uniqueidentifier как первичный ключ
    #32027066
SeregaA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Похоже, в моем случае даже и минусов не остается - в базе куча таблиц, и из них всего парочка объемом >1.000.000 записей, следовательно и требования к месту под хранение не критичны.
...
Рейтинг: 0 / 0
uniqueidentifier как первичный ключ
    #32027067
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все так. Добавлю только, что

- если будешь настраивать merge репликацию на таблицу, где primary key int'овое поле, то все равно будет создано дополнительное поле типа uniqueidentifier, так что в этом случае места для хранения потребуется больше.

- тесты на int и uniqueidentifier в случае некластерного индекса дают практически одинаковый результат на join. Кластерный int'овый вроде должен быть быстрее. На uniqueidentifier кластерный индекс вешать не стоит исходя из самого этого понятия, иначе каждый insert будет фактически приводить к физическому перемещению кучи данных.

- с merge репликацией сплошные плюсы и радости по сравнению с геморроем полей identity.
...
Рейтинг: 0 / 0
uniqueidentifier как первичный ключ
    #32027100
3.14_d'or
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2GreenSunrise:

>На uniqueidentifier кластерный индекс вешать не стоит исходя из самого этого понятия, иначе каждый insert будет >фактически приводить к физическому перемещению кучи данных.

Это спорно: если Вам необходимо ускорить INSERT'ы, то да, если SELECT'ы то нет. Классическая проблема OLTP vs DSS.
Первичный ключ типа uniqueidentifier с кластерным индексом значильно ускоряет выборки по сравнению с некластерным на том же поле.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / uniqueidentifier как первичный ключ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]