El problema es: ¿Cómo puedo eficientar una búsqueda que se cuelga demasiado? Mi proveedor de hosting me dice que cierto query consume muchos recursos.
Sucede que: Tengo una tabla (de productos) con más de 2800 registros de la que al mostrar un registro debe sugerir automáticamente 5 productos relacionados. Por ejemplo, si estás viendo una guitarra eléctrica, debe aparecer sugerido un amplificador, pedales, cables, afinadores, bajos, guitarras acústicas, etc.
Esto lo resolví utilizando MATCH() AGAINST() IN BOOLEAN MODE y funcionó muy bien mientras fueron menos de mil registros.
En concreto, ¿alguien sabe cómo puedo hacer menos colgado el proceso? ¿Qué cambios le puedo hacer a mi consulta para que esté menos lenta?
Aquí les dejo un ejemplo de la consulta:
Dadas las tablas: "html" e "images", que comparten una clave foránea, encontrar las ocurrencias de cierta cadena en "html", limitar a 5 resultados y ordenar por relevancia.
Los campos html.cod_child e images.cod_child me sirven para relacionar ambas tablas.
El campo html.related guarda ciertos términos con los que relaciono los productos, y es de tipo Fulltext.
Código:
Saludos y gracias. Cualquier idea es buena, incluso si implica manipular la estructura de las tablas. SELECT a.cod_child, a.h1, CONCAT( a.cod_child, '_', h1, '.php' ) AS url, MATCH (a.related ) AGAINST ( 'electronica cables, adaptadores conectores' IN BOOLEAN MODE ) AS rel, b.thumbUrl_img AS foto FROM html AS a LEFT JOIN images AS b USING ( cod_child ) WHERE MATCH (a.related ) AGAINST ( 'electronica cables, adaptadores conectores' IN BOOLEAN MODE ) AND a.cod_st =3 AND a.cod_child != '1362' ORDER BY rel DESC LIMIT 0 , 5