2010-04-20 18 views
9

¿Cuál es la diferencia entre las dos afirmaciones siguientes?¿Cuál es la diferencia entre una restricción única y un índice único?

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 

lo hacen las restricciones tienen un índice para ayudar a que exige la unicidad, o será un recorrido de tabla llevarse a cabo en cada inserción/actualización?

+0

Consulte http://dba.stackexchange.com/a/55139/6548 para obtener una respuesta completa. – Rory

Respuesta

9

El efecto "lógico" es el mismo: solo se pueden cargar valores únicos en la tabla. (Vale la pena mencionar que si la columna es anulable, solo se puede insertar 1 fila con NULL).

El efecto físico es el mismo: se crea un índice único en la tabla. Puede ser agrupado o no agrupado.

La única diferencia real está en los metadatos, la información que describe la base de datos almacenada en las tablas del sistema. La primera manera, se registra internamente como un índice, y la segunda, se registra como una restricción, a pesar de que los efectos netos son idénticos. Lo que significa que, en última instancia, la única diferencia es el código requerido para crearlo Y para modificarlo en el futuro.

(Esto es cierto para SQL 7.0 hasta 2005, y me sorprendería mucho si lo cambiaran en 2008).

0

Disculpe por la primera respuesta incorrecta. La restricción única es idéntica al índice único. Bajo las cubiertas, crea un índice.

0

Puede consultar Unique Constraints and Unique Indexes para compararlos.

El artículo concluye que no existe una diferencia práctica entre una restricción única y un índice único que no sea el hecho de que la restricción única también se enumera como un objeto de restricción en la base de datos. Debido a que una restricción única no puede ser deshabilitada, tener el estado de una restricción no otorga a la restricción única ningún comportamiento adicional más allá de un índice único. Sin embargo, hay varias opciones de creación de índices que no están disponibles para el comando ALTER TABLE que crea una restricción única.

Cuestiones relacionadas