¿Cuál es la diferencia entre un índice único y una clave única?¿Índice único o clave única?
Respuesta
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:
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
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 .
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.
"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.
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.
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?
- 1. Restricción única frente a índice único
- 2. Restricción única de Oracle e índice único
- 3. mysql clave única e índice
- 4. Java Collection - clave única y valor único
- 5. ¿Índice múltiple o único en Lucene?
- 6. Alterar un índice no único en un índice único
- 7. índice único se ralentiza?
- 8. ¿La clave única del servidor Sql también es un índice?
- 9. clave única frente a índice exclusivo en SQL Server 2008
- 10. Agregar índice único. SQLite3
- 11. MongoDB - índice único vs índice compuesto
- 12. Generación de clave única
- 13. ¿Cómo puedo determinar si mi objeto ActiveRecord infringe una clave/índice de base de datos única?
- 14. Modelo de datos de entidad, índice único
- 15. índice único de mysql EXCEPTO vacío o nulo
- 16. ¿Índice o único? Lo que es mejor MySql
- 17. ¿Cuál es la diferencia entre una restricción única y un índice único?
- 18. MySQL - Clave externa única
- 19. Mysql suprimir temporalmente índice único
- 20. Creando la clave única de MongoDB con C#
- 21. índices de mysql 5.0 - Único vs no único
- 22. Mysql: campo único necesita ser índice?
- 23. Índice Columna clave Índice VS incluida Columna
- 24. MySQL trunca el índice único compuesto a 64 caracteres
- 25. Índice en clave externa o no en SQL Server 2008
- 26. FOSUserBundle: Eliminar índice único para emailCanonical
- 27. clave primaria sql e índice
- 28. ¿Puede una clave externa hacer referencia a un índice no único?
- 29. clave única en toda la tabla mysql?
- 30. Cómo agregar un índice único condicionada a PostgreSQL
"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