Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Eficientar búsqueda que tarda y consume muchos recursos

Estas en el tema de Eficientar búsqueda que tarda y consume muchos recursos en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/02/2006, 18:29
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
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.
  #2 (permalink)  
Antiguo 06/02/2006, 20:19
 
Fecha de Ingreso: enero-2006
Mensajes: 14
Antigüedad: 18 años, 2 meses
Puntos: 0
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:12.