Каково различие между ограничением на уникальность данных и уникальным индексом

Каково различие между следующими двумя операторами?

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

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

10
задан My Other Me 20 April 2010 в 13:33
поделиться

2 ответа

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

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

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

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

10
ответ дан 4 December 2019 в 01:00
поделиться

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

0
ответ дан 4 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: