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

Ahora lanza esta y dinos el tiempo. Tiene, según creo, todo lo que ponías en la tuya.
SELECT t1.promedio, t1.votos, 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 FROM fotos 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)t1 ON img.id= t1.id INNER JOIN album ON img.id_album = album.id

Edito: debes aprender sobre subconsultas, claro que sí, pero también debes saber que esa versión de tu hosting de MySQL te obligará a usar sintaxis antiguas, sin subconsultas. Porque lo que yo he hecho no es una subconsulta, sino la conversión del resultado de una consulta en una tabla y su unión mediante inner join con otras tablas. Por eso funciona con esa versión.

Última edición por jurena; 29/01/2011 a las 10:05