Indices cluster

17/03/2005 - 15:05 por Anonimo | Informe spam
Hola, alguien me podría explicar que son los indices
cluster y cuando es bueno usarlos y cuando no. Gracias.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
17/03/2005 - 15:53 | Informe spam
En Sql Server podemos crear dos tipos de indices, clustered y nonclustered.
La diferencia principal es que cuando una tabla tiene un indice clustered,
entonces la data esta organizada fisicamente de acuerda a los valores de las
columnas involucradas asi como el order especificado. Por eso una tabla
solamente puede tener un solo indice clustered. Es recomendable que toda
tabla tenga un indice clustered, el cual es muy apropiado para consultas de
rango. Sql Server escoje por defecto (cuando no se especifica lo contrario)
crear un indice clustered cuando declaras claves primarias, lo cual debe
tenerse muy en cuenta pues estos valores son referenciados por los indices
nonclustered y si estos son demasiados grandes o largos pues influiran
negativamente en el rendimiento de la base de datos.

Los indices nonclustered hacen referencia al indice nonclustered o una
formula (en caso de que la tabla no tenga indice clustered) formada por el ID
del archivo, el numero de la pagina y numero de la fila en la pagina. Si
estos no son 'covered' (que in cluye todas las columnas referenciadas en el
query) pues sql server hara usa de esta formula o del valor de la clave del
indice clustered para accesar la data.

Cada vez que se inserta, borra o modifica una fila en una tabla, el indice
clustered y la data debe ser actualizada y por ende todos los indices
nonclusteres.

Una estadistica muy importante es ver la cantidad de lecturas logicas y
fisicas que sql server debe hacer para leer una tabla con indice clustered y
sin el. Fijate en el ejemplo a continuacion (cuando lo ejecutes, ve al TAB
'Messages', donde podras leer las stadisticas).

Ejemplo:

use northwind
go

set nocount on

select
orderid,
customerid,
employeeid,
orderdate,
requireddate,
shippeddate,
shipvia,
freight,
shipname,
shipaddress,
shipcity,
shipcountry
into
t
from
orders

set nocount off
go

set statistics io on
go

select * from t
where orderdate >= '19970101' and orderdate < '19980101'
go

create clustered index ix_c_t_orderdate on t(orderdate asc)
go

select * from t
where orderdate >= '19970101' and orderdate < '19980101'
go

set statistics io off
go

drop table t
go

Puedes leer mas sobre esto en los libros en linea, bajo "Clustered Indexes"
y "Nonclustered Indexes".


AMB

"" wrote:

Hola, alguien me podría explicar que son los indices
cluster y cuando es bueno usarlos y cuando no. Gracias.

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