Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ayuda con consulta Mysql

Estas en el tema de Ayuda con consulta Mysql en el foro de Mysql en Foros del Web. Es la primera vez que escribo y espero me puedan ayudar, escribo en este foro debido a que tengo un inconveniente en mi trabajo me ...
  #1 (permalink)  
Antiguo 03/12/2010, 22:03
 
Fecha de Ingreso: diciembre-2010
Mensajes: 3
Antigüedad: 13 años, 4 meses
Puntos: 0
Ayuda con consulta Mysql

Es la primera vez que escribo y espero me puedan ayudar, escribo en este foro debido a que tengo un inconveniente en mi trabajo me encargaron hacer un sistema que permita advertir a los encargados de monitorear sobre el cambio de estado de unos dispositivos que se tiene, para ello tengo acceso a la base de datos pero los datos que voy a manejar solo se encuentran en una tabla que contiene más de 20 mil registros y cada minuto que pasa cada dispositivo envía datos entre ellos el estado es decir que la tabla está en constante crecimiento ya que como digo los registros se incrementan por cada dispositivo que envía datos por el momento se tiene 200 dispositivos que están reportando a cada minuto.
Mi pregunta es ¿cómo podría hacer para recorrer dicha tabla pero no toda es decir si esta tiene suponiendo 25300 el día de hoy a una determinada hora como puedo hacer para que la consulta que tengo no me recorra los 25300 sino que tal vez solo recorra los últimos 300 registros que se insertaron en la tabla?, ya que lo que quiero es que en la aplicación cada minuto muestre los dispositivos que su estado ha cambiado (cuando el estado está en cero es normal pero cuando está en uno se debe mostrar en la aplicación).

La tabla tiene los siguientes campos:cuenta,CodigoDispositivo,timestamp,estado.

La consulta que yo hice es: SELECT * FROM gts.EventData WHERE (estado =1 and timestamp>unix_timestamp(now())-1000) GROUP BY placa Limit 0,300

Si me llega a mostrar los datos que quiero pero se demora en mostrar los resultados, porque creo que me recorre todos los registros de la tabla es decir los 25300 y no solo los 300 últimos registros registrados… y estos registros aumentan por lo tanto al pasar los días la respuesta será mucho mayor.

Por favor espero que me puedan ayudar para solucionar este problema que tengo. Gracias
  #2 (permalink)  
Antiguo 04/12/2010, 08:27
Avatar de 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: Ayuda con consulta Mysql

Es probable que el tema se pueda resolver con la creación de un indice con clave codigoDipositivo + fechahora, o bien solamente por la fecha y hora. Eso puede hacer que la búsqueda sea mucho más rápida.

Nota Bene: No uses palabras reservadas para denominar columnas o tablas. TIMESTAMP es un tipo de columna, no debe ser usado como nombre de la misma; usarlo como tal puede generar errores en las consultas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/12/2010, 09:01
 
Fecha de Ingreso: diciembre-2010
Mensajes: 3
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Ayuda con consulta Mysql

Gracias por la respuesta gnzsoloyo.

Te cuento que yo no diseñe la base de datos… aquí en el trabajo ellos ya usan un sistema que les permite ver la ubicación de los dispositivos mediante GPS y todos los datos se almacenan en esa tabla, pero ellos no tienen ningún modulo que les advierta cuando es que el estado de un dispositivo a cambiado y me pidieron que desarrolle ese modulo para que cuando ocurre ese cambio en el dispositivo empiece a sonar una alarma y que se muestre todos los dispositivos que su estado cambio. Mediante esa consulta que puse me muestra los dispositivos que su estado ha cambiado pero como dije anteriormente mucho se demora en mostrar los datos, por favor espero mas sugerencias y como hacer que la consulta no me recorra todos los registros que se tengan sino los últimos 200 y que de ahí se detenga y muestre de esos 200 registros aquellos dispositivos que su estado a cambiado.
Gracias.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:25.