base de datos: clave principal, agrupada o no agrupada

Estoy creando una base de datos en el servidor SQL 2008,

CREATE TABLE Users
(
    U_Id INT NOT NULL
    FirstName VARCHAR(50) NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    Email VARCHAR(200)
    Password VARCHAR(50)
)

Quiero hacer que U_Id sea la clave principal. Me gustaría preguntar cuál es la diferencia entre

 CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

este

 CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

y este

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

¿Cuándo usar cada uno?

Leí algún artículo pero aún no me queda claro. ¿Alguien puede darme una explicación rápida?

preguntado el 22 de mayo de 12 a las 18:05

1 Respuestas

La siguiente declaración:

CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

Es igual que este:

CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

Solo puede tener la fisicalidad de los datos de la tabla ordenada por una de los índices y, de forma predeterminada, ese índice es el que se usa para la clave principal (la restricción única de la clave principal siempre es compatible con un índice).

Si desea dejar que el orden de los datos de la tabla se almacene de acuerdo con algún otro índice, debe crear la clave principal con:

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

Y luego crea el índice agrupado con:

CREATE CLUSTERED INDEX ix_Email ON Users (Email); 

contestado el 22 de mayo de 12 a las 18:05

Solo tenga en cuenta que cualquier índice no agrupado que cree siempre incluirá los datos en el índice agrupado (porque así es como se encuentra la fila de datos real en la tabla). Documentos de Microsoft Así que no crea que ahorrará espacio al hacer que un índice grande/ancho sea el índice agrupado a menos que no tenga ningún otro índice en la tabla. - granjero

La clave principal es el identificador de una fila. Debe ser único y no nulo. El índice agrupado le dice a SQL cómo almacenar datos en el disco. Las filas de datos reales se almacenan en el orden especificado por este índice. Dado que también contiene datos sobre dónde se almacenan los datos en el disco, la clave del índice agrupado se almacena en cada índice. En casi todos los casos lo mejor es que estos sean iguales. Y casi siempre es mejor que la clave principal sea un identificador para que los datos se almacenen en el disco secuencialmente. - brianfeucht

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.