2011-09-17 60 views
1

我有一個mysql數據庫與車輛記錄。我需要一個快速查詢來返回最近4分鐘內更新的那些記錄的最新記錄。例如,車輛「A」可以每分鐘更新數次,所以它會在最近4分鐘內出現多次。與車輛B C等一樣。我只需要4分鐘窗口內的每輛車的最新條目。我已經嘗試過這樣從數據庫獲取最新記錄多個查詢

SELECT * 
FROM yourtable AS a 
WHERE a.ts = 
    (SELECT MAX(ts) 
    FROM yourtable AS b 
    WHERE b.ts > NOW() - INTERVAL 5 MINUTE 
     AND b.name = a.name) 

但是,生成結果> 10秒需要很長的時間。

+0

我很困惑 - 如果一個記錄被更新,爲什麼會表包含多條記錄,而不僅僅是一個記錄?此外,查看錶的CREATE TABLE定義以及一些示例數據可以幫助回答問題,這將非常有用。 – Kenny

+0

實際上表格沒有更新,但新記錄被插入到它,就好像它是一個車輛位置日誌 –

回答

0

這是行不通的嗎?

select distinct a.id from yourtable AS a 
where a.ts > NOW() - INTERVAL 5 MINUTE; 

它給出所有在過去的4/5分鐘內更新的車輛。

感謝, 拉克什

相關問題