¿La Clave Única de Sql Server también es un Índice?


Tengo una columna en una tabla (por ejemplo. Nombre de usuario) que quiero asegurarme de que es único. Así que creo una clave única para esa columna y la llamo IX_Users_UserName.

Ahora, si hago muchas búsquedas de usuarios basadas en su nombre de usuario, quiero asegurarme de que haya un índice para ese campo.

¿Necesito crear un índice separado, o la clave única también se considera un índice, al igual que la clave primaria es una clave única agrupada?

Author: casperOne, 2008-12-14

3 answers

Clave única: La Clave única impone singularidad de la columna en la que se están definidos. Clave única crea un índice no agrupado en la columna. La Clave Única solo permite un valor NULO.

Alter table to add unique constraint la columna:

ALTER TABLE Authors ADD CONSTRAINT IX_Authors_Name UNIQUE(Name) GO

Fuente

Más información de MSDN.

FWIW if si su restricción no crea un index, evitaría nombrarlo IX_ ya que normalmente se asumiría que está asociado con uno (IX = Index).

 39
Author: tvanfosson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-14 05:17:08

Básicamente, en SQL Server, una restricción única se realiza por medio de un índice único.

Las diferencias entre una restricción ÚNICA y un ÍNDICE ÚNICO son bastante sutiles, en realidad. Si crea un ÍNDICE ÚNICO, puede hacer referencia a eso en una restricción de clave externa de otra tabla (no funciona si crea una restricción ÚNICA....).

Entonces, ¿cuál es la diferencia? Bueno, una restricción única realmente es más una cosa lógica en una mesa: desea expresar la intención que el contenido de una columna dada (o grupo de columnas) es único.

Un índice único (como la mayoría de los índices) es más bien un detalle de implementación "detrás de escena".

Desde mi punto de vista, a menos que realmente tenga un problema con él, siempre usaría un ÍNDICE ÚNICO: el beneficio de ser parte de una restricción de integridad referencial es bastante válido y puede ser muy útil en ciertos casos. Funcionalmente, en la práctica, no hay diferencia entre usar una restricción única vs. Única Índice, de verdad.

 20
Author: marc_s,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-29 12:28:36

Una clave única es un índice en sospecho que casi todos los productos de base de datos. Tiene que serlo, de lo contrario la base de datos tendría dificultades para hacerla cumplir: cuando inserta un valor, la base de datos tiene que responder, "¿ese valor ya existe?"La manera sana de hacerlo es consultar un índice.

No tengo un servidor SQL delante de mí para probar, pero me sorprendería si no lo hiciera.

 1
Author: derobert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-14 04:51:55