MySQL,在X个小时内返回所有结果

MySQL,在X个小时内返回所有结果,mysql,sql,Mysql,Sql,我的表由多个列组成,包括unixtimestamp: CREATE MyTable( id INT NOT NULL AUTO_INCREMENT, ... timeStart INT(11) )ENGINE=MyISAM; 新项目会不断插入到此表中 我需要返回带有时间戳>(最大(开始时间)-X_持续时间)的所有项目 我有兴趣编写一个单一的优化查询来实现它 一种简单的方法是编写嵌套的select,其中内部select将MAX(timeStart)返回为maxTime,而不是选

我的表由多个列组成,包括unixtimestamp:

CREATE MyTable(
   id INT NOT NULL AUTO_INCREMENT,
   ...
   timeStart INT(11)
)ENGINE=MyISAM;
新项目会不断插入到此表中

我需要返回带有时间戳>(最大(开始时间)-X_持续时间)的所有项目

我有兴趣编写一个单一的优化查询来实现它

  • 一种简单的方法是编写嵌套的select,其中内部select将
    MAX(timeStart)返回为maxTime
    ,而不是选择大于where子句中的所有记录
  • 我对是否有更好、更有效的解决方案感兴趣

    SELECT  *
    FROM    tableName
    WHERE   timeStart > (SELECT MAX(timeStart) + INTERVAL -1 SECOND FROM tableName)
    

    +1,谢谢,虽然我已经提到了这个解决方案,但我不喜欢在没有它的情况下使用嵌套选择,所以我的问题是,他们的解决方案是否不同且更优化?只需在
    timeStart
    上添加索引即可。事实上,我有这样一个索引,还有更多的解决方案吗?如果您认为这是最理想的解决方案,请编辑您的答案以反映它,我将接受它。我认为它会更糟糕,因为这仍然是连接的嵌套选择,我需要检查性能。@Michael,那么您还需要什么?获取最大值需要使用聚合进行计算。我想你别无选择