选择比参数更新的最旧项目

时间:2018-01-29 13:29:16

标签: mysql select

表格存储来自传感器的数据以及相应的时间戳。 检索到特定条目后,我想获得该传感器的下一个(更新/更旧)条目。 目前,我对下一个较新的条目使用以下查询:

SELECT *
FROM mytable
WHERE sensor="some_id" and timefield>"2018-1-29 11:22"
order by timefield asc
limit 1 

我想知道是否有更优雅的方式来实现这一目标。 此外,查询似乎性能不佳,但索引KEY HostnameTimestamp (sensor, timefield)

1 个答案:

答案 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;