2012-01-26 21 views

cevap

35

Zaman damganızı (ve yalnızca herhangi bir işlev kullanmadan yalnızca zaman damgasını) her satır için sabit olarak hesaplanabilen bir ifadeyle karşılaştırmak için en etkili yol, bu şekilde mysql zaman damgası sütununda tanımlanan dizini kullanabilir .

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

Hep bir dizin tatmin satırları bulmak için kullanılıp kullanılamayacağını görmek için EXPLAIN SELECT ... deneyebilirsiniz WHERE tablodaki her satır kontrol etmek gerek kalmadan koşulu.

3

Sorunuz geçerli zaman damgası 10 dakika içinde kayıtları için sorar, ama geçmiş (değil gelecek) en fazla on dakika anlamında olsa gerek: Bu 10 dakika ekler

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

last_seen ve bunu geçerli zamana göre karşılaştırır. Değer daha büyükse, last_seen on dakikadan daha kısa bir süre önce.

Nasıl kullanıldığının açıklaması için documentation on DATE_ADD()'a bakın.

+1

Bu 'en verimli' yol olarak başarısız olur. – piotrm

İlgili konular