Tengo una tabla que recibe cientos de solicitudes por minuto. El problema que estoy teniendo es que necesito una forma de seleccionar solo las filas que se han insertado en los últimos 5 minutos. Estoy intentando esto:Seleccionar filas que tienen menos de 5 minutos de antigüedad con DATE_SUB
SELECT count(id) as count, field1, field2
FROM table
WHERE timestamp > DATE_SUB(NOW(), INTERVAL 5 MINUTE)
ORDER BY timestamp DESC
Mi problema es que devuelve 70k + resultados y contando. No estoy seguro de qué es lo que estoy haciendo mal, pero me gustaría obtener algo de ayuda sobre esto. Además, si hubiera una manera de agruparlos por minuto para que se vea como:
| count | field1 | field2 |
----------------------------
me gustaría la ayuda y la dirección en esto, así que por favor, hágamelo saber sus pensamientos.
¿Cuál es el tipo de columna 'timestamp'? – Tadeck
@tadeck es una fecha y hora, ¿eso marcaría la diferencia? –
Hace la gran diferencia, ya que algunas personas usan 'INT' para almacenar marcas de tiempo. También difiere del tipo 'TIMESTAMP', porque' DATETIME' se trata literalmente y no se ajusta para la zona horaria. Este puede ser el problema: compare la marca de tiempo de la entrada insertada recientemente con el resultado de 'SELECCIONAR AHORA();' y háganos saber acerca de los valores de ambos. – Tadeck