В чем разница между уникальным ключом и индексом при IsUnique = да? - PullRequest
51 голосов
/ 19 февраля 2009

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

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

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

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

Ответы [ 6 ]

35 голосов
/ 19 февраля 2009

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

7 голосов
/ 20 февраля 2009

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

6 голосов
/ 19 февраля 2009

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

4 голосов
/ 20 апреля 2012

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

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

0 голосов
/ 21 декабря 2018

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

0 голосов
/ 19 февраля 2009

уникальные индексы являются уникальными ключами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...