В чем разница между уникальным ограничением и уникальным индексом - PullRequest
10 голосов
/ 20 апреля 2010

В чем разница между следующими двумя утверждениями?

alter table [dbo].[Demo] add constraint [UC_Demo_Code] unique ( [Code] )
go
create unique nonclustered index [UK_Demo_Code] on [dbo].[Demo] ( [NB_Code] )
go

Имеет ли ограничение индекс для обеспечения его уникальности или сканирование таблицы будет выполняться при каждой вставке / обновлении?

Ответы [ 3 ]

10 голосов
/ 20 апреля 2010

«Логический» эффект тот же - в таблицу могут быть загружены только уникальные значения. (Стоит отметить, что если столбец имеет значение NULL, может быть вставлена ​​только 1 строка с NULL.)

Физический эффект тот же - уникальный индекс строится на таблице. Он может быть кластеризованным или некластеризованным.

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

(Это верно для SQL 7.0 до 2005, и я был бы очень удивлен, если бы они изменили его в 2008 году).

0 голосов
/ 29 мая 2015

Вы можете проверить Уникальные ограничения и Уникальные индексы для сравнения между ними.

В статье делается вывод, что нет практической разницы между уникальным ограничением и уникальным индексом, кроме Тот факт, что уникальное ограничение также указано в качестве объекта ограничения в базе данных. Так как уникальное ограничение не может быть отключено, наличие статуса ограничения не дает уникальному ограничению никакого дополнительного поведения помимо уникального индекса. Однако существует несколько параметров создания индекса, которые недоступны команде ALTER TABLE, которая создает уникальное ограничение.

0 голосов
/ 20 апреля 2010

Извините за мой первый неправильный ответ. Уникальное ограничение идентично уникальному индексу. Под обложками он создает индекс.

...