Ver Mensaje Individual
  #8 (permalink)  
Antiguo 25/06/2012, 11:01
jcayon
 
Fecha de Ingreso: junio-2012
Mensajes: 6
Antigüedad: 11 años, 10 meses
Puntos: 0
Sonrisa Respuesta: Crear dos columnas dependiendo de los datos de una

Hola:
Muchas gracias Leo por tus respuestas.
Si que tengo los indices creados en las tablas, cuando estuve mirando mysql vi que era una de las cosas que ayudaban a mejorar el rendimiento, aunque la fecha no la tengo como indice, no se si en este caso ayudaria.

Creo que con SELECT EXPLAIN analiza un poco el rendimiento del select, asi que probare con ambos y ya comento.
Si no con el tiempo que me tarda con los datos que tengo ya puedo ver cual de los query va tardando menos.

Por el lado de las fechas, tu solución de ponerla segun la hora esta guay, pero queria que pudiese ser un poco elegible, creo que en sensores es una buena idea darlo cada 5 min o 30 min.

Mirando un poco he llegado a la siguiente solución:

Código:
SELECT  
  CONCAT(DATE_FORMAT(fechaHora, '%Y-%m-%d'), ' ', SEC_TO_TIME(FLOOR(TIME_TO_SEC(fechahora)/(30*60))*30*60)) AS fechanormalizada,
  AVG( IF( atributo =  'Media', valor, NULL ) ) media, 
  AVG( IF( atributo =  'Maxima', valor, NULL ) ) maxima, 
  AVG( IF( atributo =  'Minima', valor, NULL ) ) minima
				
FROM  `datos recibidos` WHERE `idMaquina`='2' AND `idSensor`='1' 
				
GROUP BY idMaquina, idSensor, fechanormalizada
Como ves, saco el numero de segundos que tiene la fecha, divido entre el numero de minutos con el que quiero el rango, redondeo al entero menor, multiplico por el rango, y rearmo la fecha. Despues lo agrupo por este dato.

Tengo que comprobarlo un poco, pero así funciona. El select en el phpAdmin me tarda 0.0846 con 9636 datos agrupando hasta 275 (tengo uno cada 5 min aprox)

Funcionar funciona, pero me parece un select monstruoso, .

Bueno, muchas gracias
Jonatan Cayón