2012-01-26 32 views

回答

35

將比較你時間戳(並且僅時間戳,而無需使用其上的任何功能),以可作爲常數來計算每一行的表達,這樣的MySQL可以使用索引在您的時間戳列所限定的最有效的方式。

SELECT * FROM myTable 
WHERE last_seen >= NOW() - INTERVAL 10 MINUTE 

你總是可以嘗試EXPLAIN SELECT ...,看是否可以使用索引找到滿意的行你WHERE條件,而不需要檢查每一個行的表。

3

你的問題問10分鐘當前時間戳內記錄,但我會採取過去(而不是將來)是指不超過十分鐘:

SELECT col1, col2, col3 
FROM table 
WHERE DATE_ADD(last_seen, INTERVAL 10 MINUTE) >= NOW(); 

這增加了10分鐘, last_seen並比較與當前時間。如果該值越大,last_seen不到十分鐘前。

爲它的使用說明,請參閱documentation on DATE_ADD()

+1

這失敗爲「最有效」的方式。 – piotrm

相關問題