MySQL - Full Text Search query lentísima

 
Vista:
sin imagen de perfil

Full Text Search query lentísima

Publicado por Sergi (1 intervención) el 03/02/2016 11:39:03
Buenas soy nuevo en este foro, y estoy algo desesperado tengo una query que no se por donde agarrarla es algo compleja

La query en questión:

1
2
3
4
5
6
7
8
9
10
11
SELECT a.id,a.patrocinado1,a.patrocinado2, a.foto_main,a.nombre,a.descript,a.precio,a.modificado,a.filter_9, round( sqrt( ( ( a.filter_11 - 41.6046744) * (a.filter_11 - 41.6046744 ) * 69.1 * 69.1 ) + ( (a.filter_12 - 2.1892674 ) *(a.filter_12 - 2.1892674 ) * 53 * 53 ) ) ) as distance,+(MATCH (a.keywords_busqueda) AGAINST ('+iphone +1' IN BOOLEAN MODE)) +IF(a.nombre like '%iphone 1%',220,0) +IF(a.patrocinado1 IS NOT NULL || a.patrocinado2 IS NOT NULL,100,0)+IF(a.id_usuario < 100 ,-5,0)+IF(a.id_subcategoria = 15 ,-15,0) as rank
FROM anuncios a
INNER JOIN anuncios a_geo ON a_geo.id = a.id
INNER JOIN usuarios u ON a_geo.id_usuario = u.id
WHERE 1
AND (MATCH (a.keywords_busqueda) AGAINST ('iphone 1 ' IN BOOLEAN MODE))
AND a_geo.id_categoria !=321
AND a_geo.id_subcategoria!=330
AND a.id != 9
HAVING rank > 0
ORDER BY IF(distance <= 15 ,1,0) desc, IF(distance <= 30 ,1,0) desc, IF(distance <= 45 ,1,0) desc,IF(distance <= 90 ,1,0) desc,rank desc,u.tienda asc, a_geo.modificado desc limit 0,30

Os adjunto el explain,

esta query suele tardar unos 7segundos una barbaridad,

el ft_min_length está seteado a 1 en el my.cnf y uso Amazon RDS con una máquina muy potente

Si la búsqueda se cambia a palabras con más de un cáracter el comportamiento es bastante bueno (0.1s a 0.5s)

Mil gracias por adelantado!
Captura-de-pantalla-2016-02-03-a-las-11.37.26
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