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

Preguntas similare

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

Respuesta Responder a este mensaje
#2 Ricardo Passians
02/12/2006 - 23:27 | Informe spam
La informacion que te da Alejandro es muy completa.
Solo puntualizar que si no lo tienes claro de inicio, ten por norma definir
la PK (clave primaria) de la tabla como clustered.


"Dany Acosta" wrote in message
news:
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
Respuesta Responder a este mensaje
#3 Dany Acosta - Developers
03/12/2006 - 16:38 | Informe spam
Gracias Alejandro por la Explicacion e información muy interesante,
ahora lo tengo mas claro todo,


Alejandro Mesa escribió:
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

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida