indices en sql

ricardo_apv
13 de Octubre del 2004
Hola a todos:
Quise comprobar la rapidez con que puedo realizar una busqueda de un dato en un campo utilizando un indice, he indexado un campo llamado "nombre" de varchar(30), lo indexe e hice una consulta desde vb para mostrarlo en una grilla, la consulta fue rapida, pero luego quite el indice de la tabla y volvi a correr la consulta, pero que paso? paso que la consulta de seleccion se hizo mas rapida aun sin tener indice y asi hice pruebas poniendo y quitando indices y casi siempre sin indice era mas rapido la devolucion de los datos, la tabla tien 200,000 registros y la consulta la realizo con un LIKE, y los tiempos que he calculado lo he hecho con la función TIMER() al empezar y al terminar la consulta, ahora no estoy seguro si debo usar indices o no, se suponia que iba ha ser mas rapido!!!, espero alguien me explique que esta pasando o que hice mal.
Gracias

Quique
13 de Octubre del 2004

Quique
13 de Octubre del 2004
Si la consulta que realizas es del tipo LIKE '%XXX%', el tener el índice te ralentiza al tener que acceder primero al índice y luego a la tabla: es decir, haces el doble de accesos que si accedes sólo a la tabla y, por tanto, tardas más.

Si la consulta es del tipo LIKE 'XXX%', con el índice te tardará mucho menos siempre que el número total de registros a devolver no sea una cantidad muy elevada de los registros de la tabla.

La razón es que el índice ordena los valores y al hacer una búsqueda por subcadenas internas no vale para nada.

Un saludo