2012-09-04 12 views
6

Me pregunto si podemos crear una clave principal en una tabla en el servidor sql sin ningún tipo de índice en ella?Clave principal sin ningún índice en una tabla?

+6

La clave principal es un índice. Tu pregunta no tiene sentido ... – sp00m

+1

Lo sé. Mi pregunta era si quiero crear Pk pero no cualquier índice – AnandPhadke

+2

O ser pedante un PK es una restricción lógica que siempre se implementa mediante un índice único en versiones actuales de SQL Server. –

Respuesta

10

No. Como una implementación detalle, SQL Server mantiene la clave principal utilizando un índice. No puedes evitar que lo haga. La clave principal:

  • Asegura que no existen valores de clave duplicados
  • Permite filas individuales a ser identificados/visitada

SQL Server ya cuenta con mecanismos que ofrecen estas características - índices únicos - por lo que utiliza aquellos para hacer cumplir la restricción.

+0

Quiero agregar que por defecto el servidor sql crea un índice agrupado. Puede anular este comportamiento y el servidor creará un índice no agrupado. – gstackoverflow

0

En realidad, las funciones de indexación se realizan de la misma manera que se recorre un libro. No se puede ir a una página o tema en particular a menos que haya un número de página y su relación con los temas. Esta "Paginación" (ordenamiento) de filas se realiza físicamente por índice agrupado en SQL Server. Si no hay PK en una tabla, se puede agregar un índice agrupado en cualquier columna calificativa de clave única. Como no puede haber más de un índice agrupado en una tabla, y todos los demás índices no agrupados dependen del índice agrupado para búsqueda/recorrido, no puede crear una PK de PK sin índice agrupado.

+2

PK! = Índice agrupado. Puede tener tablas con múltiples índices no agrupados y sin índice agrupado (también conocido como montón). La ordenación física es prácticamente irrelevante y no está completamente determinada por el índice agrupado. –

-1

Puede crear una tabla con una clave principal que no sea un índice agrupado agregando la palabra clave NONCLUSTERED después de la palabra primary key.

+0

En lugar de publicar solo la respuesta a una pregunta como esta. Solo dé un ejemplo para entender bien. – tarzanbappa

Cuestiones relacionadas