Clustered o Nonclustered Index?

28/06/2006 - 12:16 por J.A. García Barceló | Informe spam
A raiz de mi post anterior me ha extrañado ver que la tabla de pedidos
TPedidos, con clave primaria [Codigo] int tiene su clave primaria
PK_TPedidos como NONCLUSTERED INDEX. El caso es que según la documentación
que he leido:

"Cuando se crea una restricción PRIMARY KEY, se crea automáticamente un
índice agrupado único en las columnas si aún no existe un índice agrupado en
la tabla o no se ha especificado un índice no agrupado."

En esta misma situación se encuentran varias tablas de mi bbdd: Sus claves
primarias son NONCLUSTERED. No entiendo como ha podido ocurrir ni cuales
fueron los pasos seguidos para crearlas así. ¿Puede esto penalizar el
rendimiento? Si es así, ¿puedo pasarlas a CLUSTERED sin quitar la clave
(perdiendo todas las restricciones de integridad referencial) y volviendola
a crear después?

Un saludo.

J.A. García Barceló
http://jagbarcelo.blogspot.com/
 

Leer las respuestas

#1 Miguel Egea
28/06/2006 - 12:31 | Informe spam
La elección del índice clustered en una tabla es una tarea bien interesante.
Los índices clustered marcan la ordenación física de la tabla por tanto
aquellas ocnsultas que accedan por rangos o que usen orders by se veran muy
beneficiadas si el índice por el que se busca o se ordena es clustered. Sin
embargo si los datos no se van introduciendo de forma incremental te
aparecerá lo que se llama el page split y si hay mucho de esto el
rendimiento de tus inserciones se vería perjudicada.

Puedes crear el índice clustered cuando quieras con create index o con
create unique index sin embargo no puedes hacer un alter index y convertir
tu pk en clustereed (al final será lo mismo, pero es así)

Saludos
Miguel Egea


"J.A. García Barceló" escribió en el mensaje
news:
A raiz de mi post anterior me ha extrañado ver que la tabla de pedidos
TPedidos, con clave primaria [Codigo] int tiene su clave primaria
PK_TPedidos como NONCLUSTERED INDEX. El caso es que según la documentación
que he leido:

"Cuando se crea una restricción PRIMARY KEY, se crea automáticamente un
índice agrupado único en las columnas si aún no existe un índice agrupado
en la tabla o no se ha especificado un índice no agrupado."

En esta misma situación se encuentran varias tablas de mi bbdd: Sus claves
primarias son NONCLUSTERED. No entiendo como ha podido ocurrir ni cuales
fueron los pasos seguidos para crearlas así. ¿Puede esto penalizar el
rendimiento? Si es así, ¿puedo pasarlas a CLUSTERED sin quitar la clave
(perdiendo todas las restricciones de integridad referencial) y
volviendola a crear después?

Un saludo.

J.A. García Barceló
http://jagbarcelo.blogspot.com/



Preguntas similares