我已經在表列時間戳稱爲「last_seen」像這樣:如何選擇是當前時間戳在10分鐘內MySQL中的所有記錄?
2012-01-25 18:46:42
2012-01-23 08:19:04
2012-01-23 08:19:04
etc...
我怎樣才能得到所有記錄的時間戳10分鐘當前時間戳的範圍內(以最有效的方式)?
我已經在表列時間戳稱爲「last_seen」像這樣:如何選擇是當前時間戳在10分鐘內MySQL中的所有記錄?
2012-01-25 18:46:42
2012-01-23 08:19:04
2012-01-23 08:19:04
etc...
我怎樣才能得到所有記錄的時間戳10分鐘當前時間戳的範圍內(以最有效的方式)?
將比較你時間戳(並且僅時間戳,而無需使用其上的任何功能),以可作爲常數來計算每一行的表達,這樣的MySQL可以使用索引在您的時間戳列所限定的最有效的方式。
SELECT * FROM myTable
WHERE last_seen >= NOW() - INTERVAL 10 MINUTE
你總是可以嘗試EXPLAIN SELECT ...
,看是否可以使用索引找到滿意的行你WHERE條件,而不需要檢查每一個行的表。
你的問題問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()
。
這失敗爲「最有效」的方式。 – piotrm