表格存储来自传感器的数据以及相应的时间戳。 检索到特定条目后,我想获得该传感器的下一个(更新/更旧)条目。 目前,我对下一个较新的条目使用以下查询:
SELECT *
FROM mytable
WHERE sensor="some_id" and timefield>"2018-1-29 11:22"
order by timefield asc
limit 1
我想知道是否有更优雅的方式来实现这一目标。
此外,查询似乎性能不佳,但索引KEY HostnameTimestamp (sensor, timefield)
。
答案 0 :(得分:0)
我认为没有更好的方法。如果你在timefield
上放一个索引,它应该足够快。此外,如果您愿意,可以使用子查询在1个查询中执行此操作:
SELECT mytable.*,
(SELECT older.id
FROM mytable AS older
WHERE older.timefield < mytable.timefield
ORDER BY timefield DESC
LIMIT 1) AS older,
(SELECT newer.id
FROM mytable AS newer
WHERE newer. timefield > mytable.timefield
ORDER BY timefield ASC
LIMIT 1) AS newer
FROM mytable
WHERE sensor="some_id;