indices en sql
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
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
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
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
