2012-01-26 15 views
10

मैं एक तालिका स्तंभ में timestamps कहा जाता है की तरह "last_seen" है:MySQL में वर्तमान टाइमस्टैम्प के भीतर 10 मिनट के सभी रिकॉर्ड का चयन कैसे करें?

2012-01-25 18:46:42 
2012-01-23 08:19:04 
2012-01-23 08:19:04 

etc... 

मैं सभी रिकॉर्ड जहां टाइमस्टैम्प वर्तमान टाइमस्टैम्प के 10 मिनट के भीतर है कैसे प्राप्त कर सकते हैं (सबसे कारगर तरीका में)?

उत्तर

35

सबसे प्रभावी तरीका आपके टाइमस्टैम्प (और केवल टाइमस्टैम्प, उस पर किसी भी फ़ंक्शन का उपयोग किए बिना) की तुलना करना होगा, जो प्रत्येक पंक्ति के लिए स्थिर के रूप में गणना की जा सकती है, इस प्रकार mysql आपके टाइमस्टैम्प कॉलम पर परिभाषित इंडेक्स का उपयोग कर सकता है ।

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

तुम हमेशा एक सूचकांक संतोषजनक पंक्तियों को खोजने के लिए इस्तेमाल किया जा सकता है, तो देखने के लिए EXPLAIN SELECT ... कोशिश कर सकते हैं अपने जहां तालिका में प्रत्येक पंक्ति की जाँच करने की आवश्यकता के बिना शर्त।

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

संबंधित मुद्दे