2012-05-22 24 views
31

Estoy creando una base de datos en SQL Server 2008,base de datos: clave primaria, agrupados o no agrupados

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 u_id 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 esto

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id) 

cuándo utilizar cada uno?

Leí un artículo pero todavía no está claro para mí. ¿Puede alguien darme una explicación rápida?

Respuesta

36

la siguiente declaración:

CONSTRAINT pk_UserID PRIMARY KEY (U_Id) 

es el mismo que éste:

CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id) 

Usted sólo puede tener el aspecto físico de datos de tabla ordenada por uno de los índices, y por defecto que índice es el utilizado para la clave principal (la restricción única de clave primaria siempre es compatible con un índice).

Si desea dejar el orden de los datos de la tabla a ser almacenados de acuerdo con algún otro índice a continuación, se debe crear la clave principal con:

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id) 

y luego crear el índice agrupado con:

CREATE CLUSTERED INDEX ix_Email ON Users (Email); 
+3

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 reales en la tabla). [Microsoft docs] (http://msdn.microsoft.com/en-us/library/ms177484.aspx) Así que no creas que ahorrarás espacio haciendo que un índice grande/amplio sea el índice agrupado a menos que no tiene otros índices en la mesa. – Granger

+1

clave principal es el identificador de una fila. Debe ser único y no nulo. Index 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, es mejor hacer que estos sean los mismos. Y casi siempre es mejor tener la clave principal como un identificador para que los datos se almacenen en el disco secuencialmente. – brianfeucht

Cuestiones relacionadas