MySQL - optimizar columns con LIKE DE mysql

 
Vista:

optimizar columns con LIKE DE mysql

Publicado por julio (1 intervención) el 21/12/2011 16:07:00
hola, tengo una consulta que lo quiero hacer con like de myql y me resulta muy lenta a la hora de hacer la consulta, hay alguna forma de optimizar la consulta, es decir, que sea mas rapido?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

optimizar columns con LIKE DE mysql

Publicado por xve (1151 intervenciones) el 21/12/2011 18:14:20
Hola Julio, no muestras la consulta que haces, pero una buena manera es indexando la tabla por los campos del where... con el mismo orden...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

optimizar columns con LIKE DE mysql

Publicado por Gonzalo GC (339 intervenciones) el 22/12/2011 01:49:58
El peor caso de uso de LIKE es cuando pones algo como:
1
LIKE '%textobuscado%'.

Es el peor de todos porque lo que estás pidiendo es que te devuelva todo lo que contiene el texto buscado, sin importar lo que tiene adelanto o atrás...
El problema de ese caso es que la única forma en que MySQL puede determinar qué registros cumplen con la condición es leyendo toda la tabla... registro por registro. lo q
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

optimizar columns con LIKE DE mysql

Publicado por Gonzalo GC (339 intervenciones) el 22/12/2011 01:55:19
(continúa...) Es lo que se denomina table scanning, porque no tiene otro modo de evaluar la expresión más que buscar desde el principio de cada campo, en cada registro.
Te imaginas que en esas condiciones, mientras más registros tenga la tabla, y más texto haya en ese campo, más lento será el proceso de búsqueda.

Una basura, en definitiva.

¿La solución?
Simple: Restringe al usuario la busqueda por inicio de la palabra o por final de la palabra, de modo que quede algo como
LIKE 'texobuscado%'
o bien
LIKE '%texobuscado'.
El resultado será mucho más rápido porque descartará sin mirar lo que no comience o termine con ese texto, y que serán la mayoría de los casos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar