SQL返回最新记录

时间:2014-05-13 06:36:46

标签: mysql sql

我表中的一列数据类型为TIMESTAMP。我想使用timestamp列从表中获取最新记录。表中的记录可能在几百到几百万之间变化。查询目前看起来像这样。

SELECT alarm_severity_id
FROM alarm_notification
WHERE alarm_life_cycle_id = 25
ORDER BY event_timestamp DESC
LIMIT 1;

由于表中的记录数量,我怀疑查询可能需要相当长的时间(取决于记录)。当然,我可以在event_timestamp列上放置一个索引来提高性能。但是,我很想知道这是否是获得结果的最佳查询。或者还有其他正确的方法。

2 个答案:

答案 0 :(得分:2)

要做的就是创建一个两列的INDEX,首先是alarm_life_cycle_id,第二个是event_timestamp。

ALTER TABLE `alarm_notification` ADD INDEX `my_index` (`alarm_life_cycle_id`, `event_timestamp`)

有了这个索引,MIN() MAX()ORDER BY ... LIMIT 1之间的差异实际上可以忽略不计了,请参阅更多信息:https://stackoverflow.com/a/426785/953684

答案 1 :(得分:1)

您可以尝试找出最大时间戳,然后找出相应的alarm_severity_id

select alarm_severity_id
  from alarm_notification
 where (alarm_life_cycle_id = 25) and
       (event_timestamp in 
          (select Max(event_timestamp)
             from alarm_notification
            where alarm_life_cycle_id = 25))
 limit 1

event_timestamp字段上创建索引(如果您没有)