2010-09-25 35 views

Respuesta

23

La pieza única no es donde radica la diferencia. El índice y la clave no son lo mismo, y no son comparables.

Una clave es una columna de datos, o varias columnas, que están forzadas a ser únicas con una restricción, ya sea clave principal o restricción exclusiva explícitamente denegada. Mientras que un índice son estructuras para almacenar la ubicación de datos para una recuperación más rápida.

A partir de los documentos:

Unique Index

crea un índice único en una tabla o vista . Un índice único es aquel en el que no se permite que dos filas tengan el mismo valor de clave de índice . Un índice agrupado en una vista debe ser único

Unique key (Constraint)

se pueden utilizar restricciones únicas para hacer seguro de que no hay valores duplicados son entrado en columnas específicas que hacen no participar en una primaria llave. Aunque tanto una restricción UNIQUE y una restricción PRIMARY KEY cumplir singularidad, utilizan una restricción UNIQUE en lugar de una restricción PRIMARY KEY cuando se quiere hacer cumplir la singularidad de una columna, o una combinación de columnas, que no es el clave primaria .

19

Este MSDN article comparing the two is what you're after. La terminología es tal que "restricción" es ANSI, pero en SQL Server no puede deshabilitar una restricción única ...

Para la mayoría de los propósitos, no hay diferencia: la restricción se implementa como un índice debajo de las cubiertas. El artículo de MSDN respalda esta - la diferencia está en los meta-datos, para cosas como:

  • FILLFACTOR pellizcar
  • INCLUDE proporciona índices más eficientes de recubrimiento (de restricción compuesto)
  • un índice filtrado es como una restricción sobre un subconjunto de filas/ignorar múltiples nulos, etc.
+1

"la restricción se implementa como un índice bajo las sábanas" - toda la razón, y sería imposible hacer cumplir de manera eficiente sin un índice en cualquier caso. – DaveBoltman

2

"Clave única" es una tautología. Una clave (también conocida como "Candidate Key") es una característica lógica de la base de datos, una restricción que impone la exclusividad de un conjunto de atributos en una tabla.

Un índice es una función de nivel físico destinada a optimizar el rendimiento de alguna manera. Hay muchos tipos de índice.

-1

Clave única: Es una restricción que impone limitaciones en la base de datos. Esa limitación es que no permitirá valores duplicados. Por ejemplo, si desea seleccionar una columna como clave principal, NO debería ser NULA & ÚNICA.

Índice único: Es un índice que mejora el rendimiento al ejecutar consultas en su base de datos. En el índice único, tampoco permite valores duplicados en el índice. es decir, no dos filas tendrán el mismo valor de clave de índice.

0

Tanto la clave (también conocida como keyword) como el índice son identificadores de una fila de la tabla.
Aunque el índice es una estructura de identificación paralela, que contiene un puntero a la fila identificada, mientras que las claves son miembros de campo in situ.

La clave, como identificador, implica unicidad (restricción) y NOT NULL (restricción). No tiene sentido usar NULL como identificador (ya que null no puede identificar nada) así como un valor de identificación no único.
índice no agrupado puede contener datos reales, no sirve como identificador para datos reales, y así que no único [1]

Es desafortunado práctica que el índice o clave (identificador) es llamado por restricción (regla o restricción) a qué siguieron la mayoría de las respuestas anteriores.

Las claves se utilizan en el contexto de:

  • alternativo claves candidatas aka aka secundario, pueden ser múltiples
  • clave compuesta (unos pocos campos combinados)
  • clave principal (superclave), natural o sustituto llave, único, muy utilizado para la integridad referencial
  • clave

clave externa exterior es la clave en una otra tabla (donde es clave principal) e incluso no una clave a la que se refieren con frecuencia. Tal uso se explica por el acceso directo confuso del término "restricción de clave externa" a solo "clave externa".

restricción de clave primaria realmente implica restricciones NOT NULL y UNIQUE + esa columna referenciada (o columnas combinadas) es el identificador y también por desgracia sustituido por "clave primaria" o "restricción de clave primaria", mientras que es a la vez que no se puede llamar ya sea por restricción única (clave principal) o por única clave (primaria).


Actualización:
Mi pregunta relacionada:
[1]
UNIQUE argument for INDEX creation - what's for?

Cuestiones relacionadas