Forums Últimos mensajes - Powered by IBM
 

indice sobre campo numerico

04/01/2007 - 23:00 por Gastoncito | Informe spam
tengo una tabla con un campo INT...
esta tabla tiene alrededor de 20000 registros

las busquedas las realizo exclusivamente por este campo INT...

es conveniente realizar un indice sobre este campo?
 

Leer las respuestas

#1 Jose Mariano Alvarez
05/01/2007 - 04:21 | Informe spam
Una regla que puede ayudarte podria ser:

Si el porcentaje de filas que dvuelve la consulta respecto del total de
filas esta por debajo del 10% es muy probable que te sirva el indice por esa
columna.
Si estas por arriba de ese porcentaje un indice clustered podria ayudarte
pero dificilmente un indice nonclustered por esa sola columna te ayude.
Es muy probable que si en ese caso no precisas devolver todas las columnas
de la tabla la mejor opcion sea un cover index.

Todo esto puede depender del diseño de tu tabla.

Tal como te dijeron el Index Tuning Wizard o el database engine tuning
advisor pueden darte una sugerencia mas precisa.

Es muy dificil que usando una sola tabla (sin join) elija usar un
nonclustered index debido a un group by en lugar de aplicar primero el
predicado de la clausula where.

Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)



"Alejandro Mesa" wrote:

Gastoncito,

Que tipo de consultas realizas sobre esa tabla?

Dependiendo del tipo de consulta, asi sera la estrategia a escoger para
crear los indices.

- Busquedas abiertas como c1 >= @c
- Busquedas con uso de la clausula GROUP BY
- Busqueda de valores unnicos
- Union (join) con otras tablas

Tambien debes analizar la densidad de valores en esa columna, puesto que si
escoges crear un indice nonclustered y los valores se repiten mucho, sql
server no optara por usar el indice, sino que preferira hacer un scan del
indice clustered o la tabla (heap) si esta no tiene indice clustered.


AMB

"Gastoncito" wrote:

> tengo una tabla con un campo INT...
> esta tabla tiene alrededor de 20000 registros
>
> las busquedas las realizo exclusivamente por este campo INT...
>
> es conveniente realizar un indice sobre este campo?
>
>
>

Preguntas similares