簡體   English   中英

SQL返回最新記錄

[英]SQL to return the latest record

我表中的一列有數據類型為TIMESTAMP。 我想使用timestamp列從表中獲取最新記錄。 表中的記錄可能在幾百到幾百萬之間變化。 查詢當前看起來像這樣。

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

由於表中的記錄數量,我懷疑查詢可能需要相當長的時間(取決於記錄)。 當然,我可以在event_timestamp列上放置一個索引來提高性能。 但是,我很想知道這是否是獲得結果的最佳查詢。 或者還有其他正確的方法。

要做的就是創建一個兩列的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

您可以嘗試找出最大時間戳 ,然后找出相應的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字段上創建索引 (如果沒有)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM