Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/10/2013, 09:12
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Agilizar consulta a mysql

La verdad es que me sorprende que te funcione, habida cuenta que esa consulta contiene al menos un error de sintaxis...
Como sea, yo la plantearías así:
Código PHP:
$query_atrazadas "SELECT ";
$query_atrazadas .= "    hi.id_history, ";
$query_atrazadas .= "    hi.id_trabajos, ";
$query_atrazadas .= "    hi.observaciones, ";
$query_atrazadas .= "    hi.fecha  ";
$query_atrazadas .= "FROM history_order hi ";
$query_atrazadas .= "    INNER JOIN trabajos tjs ON tjs.id_trabajos = hi.id_trabajos ";
$query_atrazadas .= "WHERE ";
$query_atrazadas .= "    tjs.condicion = 2 ";
$query_atrazadas .= "    AND Fecha_entrega < '$por_hoy' ";
$query_atrazadas .= "    AND NOT tjs.area IN('Ventas', 'Despacho') ";
$query_atrazadas .= "    AND (hi.fecha, hi.id_trabajos) IN ";
$query_atrazadas .= "        (SELECT MAX(fecha) TER, id_trabajos ";
$query_atrazadas .= "        FROM history_order ";
$query_atrazadas .= "        GROUP BY id_trabajos) ";
$query_atrazadas .= "ORDER BY tjs.area DESC"
Estoy escribiendola en esa forma para que la sintaxis de la consulta pueda verse. Te recomiendo armar los scripts de un modo que sean más claros y fáciles de leer.
Fuera de esto, para optimizar el resultado sería conveniente que generes un índice sobre la columna "Fecha_entrega", para mejorar un poco la performance.

Consejo de experiencia: no hagas un Copy+Paste de este código. Verifica bien lo que puse antes de ejecutarlo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)