cuando usar indices clustered???

02/12/2006 - 15:43 por Dany Acosta | Informe spam
Amigos una consulta respecto a este tema,
cuando es recomendable crear indices tipo clustered y cuando NO??
Como puedo decidir en un momento si la tabla va a tener un IDX clustered??

Gracias por toda la info que me puedan dar


Dany Acosta - Developers
 

Leer las respuestas

#1 Alejandro Mesa
02/12/2006 - 18:13 | Informe spam
Dany,

En SQL Server es recomendable que toda tabla tenga un indice clustered, al
menos que la cantidad de filas sea tan poca que toda la info pueda ser
almacenada en una pagina, principalmente ayuda a evitar la particion de
paginas (page split). Te adjunto un articulo sobre el tema de por que debemos
asignar un indice clustered a cada tabla. La pregunta es que columnas usar
para forma el indice clustered, para lo cual se deben tener en cuenta los
siguientes putos:

- Que columnas son usadas frecuentemente en las clausulas "group by" y
"order by"
- Que columnas son usadas frequentemente en filtros de grupos (BETWEEN, >=,
<=, >, <, etc.)
- Como el indice clustered es referenciado por cada indice nonclustered para
apuntar donde se encuentra la data, esta clave (la del indice clustered) debe
ser estrecha, pues esta formara parte o sera referenciada por cada clave de
los indices nonclustered
- Si la columna que se escoje para formar la clave del indice clustered se
incrementa monoliticamente (identity o cuyo valor sea en incremento),
entonces habra menor probabilidad de ocurran particionamiento de paginas.
Habria que tomar en cuenta esto si tu sistema implementa una gran cantidad de
insercciones por segundo, lo cual pudiera producir un comportamineto conocido
como "puntos calientes" (hotspots), que se refiere a que el sistema de IO
estara concentrado en un punto especifico del disco.
- Si el valor de la clave es unico entonces sera mejor, puesto que por
definicion, si la clave del indice clustered es referenciada desde los
indices nonclustered, entonces esta debe ser unica y por lo tanto cuando esta
no lo es, SQL Server agrega un unificador (valor de 4 bytes) a esa clave por
detras del telon.
-Escojer columnas que no se actualizan con frecuencia, puesto que la data
estara ordenada por la clave del indice clustered y si estas columnas son
actualizadas con frecuencia, entonces habra que reordenar la data y mover
filas y/o paginas.

Cluster That Index!
http://www.quest-pipelines.com/news...1103_B.htm

Tips on Optimizing SQL Server Clustered Indexes
http://www.sql-server-performance.c...ndexes.asp


AMB

"Dany Acosta" wrote:

Amigos una consulta respecto a este tema,
cuando es recomendable crear indices tipo clustered y cuando NO??
Como puedo decidir en un momento si la tabla va a tener un IDX clustered??

Gracias por toda la info que me puedan dar


Dany Acosta - Developers

Preguntas similares