Ideas sobre cuales indices crear

12/04/2005 - 13:53 por Carlos Rodriguez | Informe spam
Hola a todos.

Estoy desarrollando un sistema y me interesa tener una idea de en cuales
cosas me baso para ir creando los principales indices en las tablas.
Ok, sé que es en la practica y con los planes de ejecución para ir viendo el
desempeno, pero lo que quiero es como tener algunos conceptos basicos si se
de antemano el tipo de consultas que se realizaran. Por ejemplo algun
articulo que me de algunas pautas teoricas.

Muchas gracias again

Preguntas similare

Leer las respuestas

#1 Jhonny Vargas P. [MVP]
12/04/2005 - 15:36 | Informe spam
Hola Carlos,

Solo ten presente lo siguiente al crear índices: "Los campos en el where de
una sentencia, son canditatos a ser índices.".

Esto quiere decir que si tengo la siguiente tabla:

Movimientos:
movID int identity(1,1)
codigo_cliente int
fecha datetime
[..]
etc...

y requiero hacer las siguientes consultas:

Select movID, codigo_cliente, fecha
From Movimiento
Where codigo_cliente = 123

Necesariamente tendrías que crear un índice por codigo_cliente

Select movID, codigo_cliente, fecha
From Movimiento
Where fecha between '20050101' and '20050401' And codigo_cliente = 123

Necesariamente tendrías que crear un índice por fecha y por codigo_cliente


Saludos,
Jhonny Vargas P.
Santiago de Chile



"Carlos Rodriguez" escribió en el mensaje
news:%23%
Hola a todos.

Estoy desarrollando un sistema y me interesa tener una idea de en cuales
cosas me baso para ir creando los principales indices en las tablas.
Ok, sé que es en la practica y con los planes de ejecución para ir viendo
el
desempeno, pero lo que quiero es como tener algunos conceptos basicos si
se
de antemano el tipo de consultas que se realizaran. Por ejemplo algun
articulo que me de algunas pautas teoricas.

Muchas gracias again


Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP]
12/04/2005 - 17:01 | Informe spam
Puedes empezar considerando los índices de las claves primarias y de
columnas vinculadas en referencias de claves foráneas. Luego puedes
construirte un conjunto de las consultas de mayor uso, ejecuta una
prueba de fuerza contra el servidor (generate un archivo de traza con
Profiler) y usa el Index Tuning Wizard para que te sugiera indices que
pudieras necesitar en base a las consultas que has probado.

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and
confers no rights.



"Carlos Rodriguez" wrote in message
news::

Hola a todos.

Estoy desarrollando un sistema y me interesa tener una idea de en cuales
cosas me baso para ir creando los principales indices en las tablas.
Ok, sé que es en la practica y con los planes de ejecución para ir viendo el
desempeno, pero lo que quiero es como tener algunos conceptos basicos si se
de antemano el tipo de consultas que se realizaran. Por ejemplo algun
articulo que me de algunas pautas teoricas.

Muchas gracias again
Respuesta Responder a este mensaje
#3 Salsita
12/04/2005 - 18:03 | Informe spam
Y digo yo en la práctica que diferencia hay entre hacer un índice
"normal" y uno agrupado. Es decir. Si en una tabla tengo que crear 3 índices
(3 campos), que diferencia habría entre hacer un índice agrupado de esos
tres campos y hacer un índice por cada campo?


"Gustavo Larriera [MVP]" escribió en el mensaje
news:OY$
Puedes empezar considerando los índices de las claves primarias y de
columnas vinculadas en referencias de claves foráneas. Luego puedes
construirte un conjunto de las consultas de mayor uso, ejecuta una prueba
de fuerza contra el servidor (generate un archivo de traza con Profiler) y
usa el Index Tuning Wizard para que te sugiera indices que pudieras
necesitar en base a las consultas que has probado.

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.



"Carlos Rodriguez" wrote in message
news::

Hola a todos.

Estoy desarrollando un sistema y me interesa tener una idea de en cuales
cosas me baso para ir creando los principales indices en las tablas.
Ok, sé que es en la practica y con los planes de ejecución para ir viendo
el
desempeno, pero lo que quiero es como tener algunos conceptos basicos si
se
de antemano el tipo de consultas que se realizaran. Por ejemplo algun
articulo que me de algunas pautas teoricas.

Muchas gracias again



Respuesta Responder a este mensaje
#4 Ricardo Passians
13/04/2005 - 13:34 | Informe spam
Y digo yo en la práctica que diferencia hay entre hacer un índice
"normal" y uno agrupado. Es decir. Si en una tabla tengo que crear 3


índices
(3 campos), que diferencia habría entre hacer un índice agrupado de esos
tres campos y hacer un índice por cada campo?




Muchísima diferencia!!! Pero no debe verse como una cosa o la otra. El
índice agrupado es un índice que establece el orden físico en que estarán
los datos de la tabla en el disco. No es que sean mutuamente excluyentes
los agrupados de los no agrupados. Normalmente deberán coexistir tanto el
indice agrupado (mayormente este para la clave primaria) con los indices de
los demas campos en los cuales se basarán las queries frecuentes.

En los BOL puedes ver informacion detallada sobre estos temas.
Respuesta Responder a este mensaje
#5 Don Roque
13/04/2005 - 21:07 | Informe spam
Un agregado importante:
Los indices (ya sean agrupados o no) se organizan en forma de arbol.
Otra de las diferencias que vas a encontrar entre un indice CLUSTERED o
un NON CLUSTERED es que en el caso del CLUSTERED (agrupado) el ultimo
nivel del arbol (el nivel de hoja) es precisamente la pagina donde se
encuentran los datos. Es por eso que cuando en una consulta, el query
optimizer decide utilizar un indice NON CLUSTERED, vas a ver un item en
el query plan que es el Bookmark Lookup (el salto del ultimo nivel del
indice a la pagina donde se encuentran los datos).
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida