Está en la página 1de 6

Comportamiento de bsqueda al

aplicar distintos tipos de ndices.


SQL SERVER

Alumno: Walter Dvalos


Materia: Bases de Datos 2
Fecha de Entrega: 9/4
Profesoras: Rosa Wainer, Valeria Becker.

Introduccin
En el presente informe se detallaran los datos relevados al
realizar consultas sobre distintas tablas, observando el
tiempo de respuesta del motor de base de datos al aplicar
las consultas, aplicadas con distintos ndices o sin ellos.
En este caso se ha optado por la utilizacin de la base de
datos SQL Server versin 2008.

Para el siguiente informe primeramente se realiza la instalacin de la base


SQL Server 2008 y se comenz creando una tabla con 131 registros llamada
EMPLOYEES

En esta tabla tenemos un ndice non clustered sobre el atributo primary key
ID y un ndice cluster sobre el atributo name. Al aplicar bsqueda por
estas columnas no se obtuvieron diferencias en los tiempos de respuesta,
probablemente por la baja cantidad de registros. Dada esta situacin me vi
obligado a recurrir a una tabla con un volumen ms grande de datos.

La siguiente tabla llamada LogActividad contiene un total de 904309


registros, lo cual nos puede dar un buen muestreo para la ejecucin de
consultas y la medicin de velocidad de procesamiento de la base de datos.
Esta tabla contiene un ndice nonclustered sobre uno de sus atributos
llamado WorkflowInstanceId y un ndice clustered sobre otro su primary
key Id.

La primera consulta que se muestra fue realizada sobre el ndice


nonclustered de la tabla y le tomo al motor traer los registros unos 3
milisegundos.

Pasando al ndice cluster sobre la primary key Id se observa

Podemos ver que al comparar por el ndice cluster sobre id se tiene un


tiempo de respuesta 10 veces ms alto aunque traiga un solo registro. Se
puede inferir que los ndices cluster son un poco ms lentos al realizar
bsqueda de datos que los nonclustered.
Ahora vamos a mostrar una bsqueda sobre un atributo sin ndice que para
esta tabla seria la columna Fecha

Se puede ver un tiempo de respuesta mucho ms alto que cuando se


aplicaron bsqueda con los ndices.

Conclusin
Aplicar bsquedas sobre ndices clustered es menos eficiente que aplicarlos
sobre ndices nonclustered, y realizar bsquedas sobre campos sin ndices
es mucho ms ineficiente aun.
Aunque sea ms ineficiente la bsqueda sobre el ndice clustered se debe
notar que SQL Server por defecto crea ndices clustered sobre los primary
key. Esto se debe a que al ser un primary key autoincremental es mucho
ms fcil la insercin sobre ellos ya que se genera mucha menos
fragmentacin, porque que los registros se aaden al final de las tablas.
Esto no sera as si se usara un ndice clustered sobre un atributo que no es
autoincremental.
Finalmente podemos decir que la eleccin de los ndices debe pensarse
segn las tareas que vayan a realizarse con los distintos datos de cada
tabla.