我在数据库中有一个按时间存储日志数据的表。一天之内,数据库中可能有一百万行。时间没有任何固定的间隔。它有几个索引,包括时间。我想要做的是构建一个查询,该查询将返回一组行,每个时间间隔一行。例如,我可以执行查询以在一天内每 15 分钟返回 1 行。这将返回 24*60=96 行。返回的每一行实际上是请求间隔之前数据库中最近的行(因为数据库中的数据将不等于请求的间隔)。
我不知道该怎么做。我不能只为一组特定的索引和时间间隔查询所有行,因为它会将超过 1 GB 的数据加载到内存中,这太慢了。有没有任何有效的方法可以使用 SQL 来做到这一点。我正在使用 MySQL 数据库。我愿意更改表索引/等...
TIME
11:58
12:03
12:07
12:09
12:22
12:27
12:33
12:38
12:43
12:49
12:55
如果我想从 12:00 到 1:00 每隔 15 分钟查询一次,我会回复:
11:58 (nearest 12:00)
12:09 (nearest 12:15)
12:27 (nearest 12:30)
12:43 (nearest 12:45)
12:55 (nearest 1:00)
如果它更容易,我还可以将时间存储为数字(即自 1970 年以来的毫秒)。在上面的查询中,这将是 900000 毫秒的间隔。