Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/01/2011, 16:45
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: mucha lentitud desde hace algunos dias

Mayid,
sólo por decir algo al respecto
yo haría un cruce inner join entre fotos y puntuaciones, y haría de esa tabla un alias y saco el límite con las tres; posteriormente uno
SELECT img.id, img.titulo, img.nombre_foto, img.tecnica, img.medidas , album.id AS id_album, album.titulo AS titulo_album, album.id_usuario AS id_autor , SUM(rate.puntaje) promedio, count(rate.puntaje) AS votos FROM fotos AS img INNER JOIN (SELECT fot.id id, SUM(rate.puntaje) promedio, count(rate.puntaje) votos FROM fotos AS fot INNER JOIN puntuaciones AS rate ON fot.id = rate.id_foto GROUP BY fot.id ORDER BY promedio DESC, votos DESC LIMIT 3) AS tabla1 ON tabla1.id =img.id INNER JOIN album ON img.id_album = album.id

No he probado nada. La idea es sacar lo más rápidamente posible las tres con más valores, evitando el left join que une todos los valores de foto, con todos los datos que arrastra y los nulos, ralentizando todo el proceso. Haz alguna prueba con esto, y revisa los índices. Esto no debería darte problema.