Ответ 1
Создание ограничения UNIQUE является более ясным утверждением правила. Атрибут IsUnique индекса - это деталь реализации - , как реализуется правило, а не , что правило. Эффект тот же, хотя.
У меня есть таблица с первичным ключом, но я хочу, чтобы два других столбца были ограничены, поэтому комбинация из двух гарантирована всегда быть уникальной.
(тупой пример: в таблице BOOKS столбец IBAN является первичным ключом, но комбинация столбцов Title и Author также всегда должна быть уникальной.)
В SQL Server Management Studio можно либо создать новый индекс, либо установить IsUnique в Yes, либо я могу создать новый уникальный ключ.
В чем разница между двумя подходами и какой из них лучше подходит для каких целей?
Создание ограничения UNIQUE является более ясным утверждением правила. Атрибут IsUnique индекса - это деталь реализации - , как реализуется правило, а не , что правило. Эффект тот же, хотя.
Существует четкая разница между двумя. Уникальное ограничение определяет, какая комбинация столбцов должна быть уникальной. Уникальный индекс - это просто способ убедиться, что вышесказанное всегда справедливо. Но возможно иметь неидеальный индекс, поддерживающий уникальное ограничение. (если ограничение является отложенным = только должно быть действительным во время фиксации, но разрешено прерывать его в середине транзакции)
Просто, чтобы вы знали, когда вы создаете уникальное ограничение, SQL Server создаст индекс за кулисами
Одна вещь, которую я только усмотрел, заключается в том, что по SSMS для сценариев уникальных ключей по умолчанию было установлено значение true, но для сценариев индексов было установлено значение False. Когда я использовал контекстное меню Script Table As из SSMS, я не получил свои уникальные индексы.
Кроме того, если для типа установлено значение "Уникальный ключ", вы не можете изменить параметр "Игнорировать дубликат ключа". Сначала вы меняете тип с уникального ключа на индекс, тогда вы можете установить Игнорировать дубликаты ключей в true.
Уникальные индексы - это уникальные ключи.
Я не думаю, что между ними есть какая-либо разница, но используя уникальный индекс, мы можем получить два преимущества, так как столбец уже уникален и также содержит индекс, поэтому поиск будет быстрее. Таким образом, использование уникального индекса является более выгодным.