Подтвердить что ты не робот

В чем разница между уникальным ключом и индексом с IsUnique = Yes?

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

(тупой пример: в таблице BOOKS столбец IBAN является первичным ключом, но комбинация столбцов Title и Author также всегда должна быть уникальной.)

В SQL Server Management Studio можно либо создать новый индекс, либо установить IsUnique в Yes, либо я могу создать новый уникальный ключ.

В чем разница между двумя подходами и какой из них лучше подходит для каких целей?

4b9b3361

Ответ 1

Создание ограничения UNIQUE является более ясным утверждением правила. Атрибут IsUnique индекса - это деталь реализации - , как реализуется правило, а не , что правило. Эффект тот же, хотя.

Ответ 2

Существует четкая разница между двумя. Уникальное ограничение определяет, какая комбинация столбцов должна быть уникальной. Уникальный индекс - это просто способ убедиться, что вышесказанное всегда справедливо. Но возможно иметь неидеальный индекс, поддерживающий уникальное ограничение. (если ограничение является отложенным = только должно быть действительным во время фиксации, но разрешено прерывать его в середине транзакции)

Ответ 3

Просто, чтобы вы знали, когда вы создаете уникальное ограничение, SQL Server создаст индекс за кулисами

Ответ 4

Одна вещь, которую я только усмотрел, заключается в том, что по SSMS для сценариев уникальных ключей по умолчанию было установлено значение true, но для сценариев индексов было установлено значение False. Когда я использовал контекстное меню Script Table As из SSMS, я не получил свои уникальные индексы.

Кроме того, если для типа установлено значение "Уникальный ключ", вы не можете изменить параметр "Игнорировать дубликат ключа". Сначала вы меняете тип с уникального ключа на индекс, тогда вы можете установить Игнорировать дубликаты ключей в true.

Ответ 5

Уникальные индексы - это уникальные ключи.

Ответ 6

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