Так как вы выполняете репликацию, ваши правильные личности - это то, что нужно избегать. Я бы сделал ваш GUID первичным ключом, но не кластеризованным, так как вы не можете использовать newsequentialid. Это поражает меня как ваш лучший курс. Если вы не сделаете это PK, а поместите в него уникальный индекс, рано или поздно это может привести к тому, что люди, которые поддерживают систему, не будут правильно понимать отношения FK, приводящие к ошибкам.

я есть несколько таблиц, единственными уникальными данными которых является столбец uniqueidentifier (Guid). Поскольку направляющие не являются последовательными (и они генерируются на стороне клиента, поэтому я не могу использовать newsequentialid ()), я создал не первичный некластеризованный индекс для этого поля идентификатора вместо того, чтобы давать таблицам кластеризованный первичный индекс. ключ.

Мне интересно, как это влияет на производительность для этого подхода. Я видел, как некоторые люди предполагают, что таблицы должны иметь автоинкрементный («идентификатор») int в качестве кластеризованного первичного ключа, даже если он не имеет никакого значения, поскольку это означает, что сам механизм базы данных может использовать это значение для быстрого ищите строку вместо того, чтобы использовать закладку.

Моя база данных реплицирована слиянием на нескольких серверах, поэтому я отошел от столбцов identity int, поскольку они немного сложны для правильной репликации.

о чем ты думаешь? Должны ли таблицы иметь первичные ключи? Или это нормально, если у вас нет кластерных индексов, если нет разумных столбцов для индексации таким образом?

Ответы на вопрос(7)

Ваш ответ на вопрос