Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/11/2011, 09:22
Avatar de stramin
stramin
 
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Tomar el ultimo dato sin tener que ordenar

Buenos dias/tardes/noches!

Estoy teniendo un problema bastante grande en un sistema que muestra el último dato de una tabla, lo estaba haciendo ordenando la tabla por id descendente con un limite de 1 para solo tomar el ultimo, o sea:

Código MySQL:
Ver original
  1. SELECT dataval FROM etcom
  2. WHERE `Year`>='$cur_yea' AND `Month`>='$cur_mon' AND `Day`>='$cur_day' AND HOUR(Time)>$cur_hou
  3. AND Box='$eq' AND Sensor='$sn' ORDER BY Id DESC LIMIT 1;

el problema comenzo despues de un mes, esta tabla recibe 10.800 señales por hora, lo que hace un total de 7.776.000 señales al mes, pero lo que está retrazando la consulta es el ORDER BY (si quito el order by se ejecuta rapidamente pero muestra el primer dato en vez del último).

Demora mas de un minuto y el sistema se cae por tiempo máximo de ejecución excedida

Habia pensado solucionarlo haciendo algo así:

Código MySQL:
Ver original
  1. SELECT dataval FROM etcom
  2. WHERE `Year`>='$cur_yea' AND `Month`>='$cur_mon' AND `Day`>='$cur_day' AND HOUR(Time)>$cur_hou
  3. AND Box='$eq' AND Sensor='$sn' AND id=MAX(id) LIMIT 1;

pero me da error (Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource)

Espero que puedan ayudarme, se me están acabando las ideas D:

Gracias!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D