Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Eficientar búsqueda que tarda y consume muchos recursos (http://www.forosdelweb.com/f86/eficientar-busqueda-que-tarda-consume-muchos-recursos-369175/)

Escoffie 06/02/2006 18:29

Eficientar búsqueda que tarda y consume muchos recursos
 
Hola foreros:

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:

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

Saludos y gracias. Cualquier idea es buena, incluso si implica manipular la estructura de las tablas.

isis_eli 06/02/2006 20:19

Holas, soy muy nueva en programacion, pero se me ocurre que podrias clasificar tus productos en categorias, agregandole una columna categoria, y una tabla categorias que las linkee con un id. y despues si queres que se relacionen los productos pediselo desde el php con cual queres que se relacione, y de la base de datos le mandas un "SELECT * FROM productos WHERE categoria='$id' LIMIT 0,5". hasta le podrias incluir un random en algun lado para que los productos relacionados no sean siempre los mismos.

Saludos , espero k sirva...
Isis.


La zona horaria es GMT -6. Ahora son las 09:41.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.