वैसे टाइमस्टैम्प कॉलम और यूजरआईडी पर एक इंडेक्स मददगार होगा। आपको EXPLAIN Statement के आउटपुट को पढ़ने में सक्षम होना चाहिए।
MySQL पर जाएँ और निम्न कार्य करें:
EXPLAIN SELECT timestamp, username, [a few more] FROM log
WHERE timestamp BETWEEN '2012-03-30 08:00:00' AND '2012-03-30 16:00:00'
AND username='XX'
यह आपको वह योजना दिखाता है जो MySQL क्वेरी को निष्पादित करने के लिए उपयोग करता है। कुंजी नामक कॉलम होगा। यह इंगित करता है कि MySQL क्वेरी में किस इंडेक्स का उपयोग कर रहा है। मुझे संदेह है कि आप वहां सभी देखेंगे जिसका अर्थ है कि MySQL तालिका को ऊपर से नीचे तक स्कैन कर रहा है, जहां आपके खंड के विरुद्ध प्रत्येक पंक्ति से मेल खाता है। अब टाइमस्टैम्प और यूजर आईडी कॉलम पर एक इंडेक्स बनाएं। EXPLAIN कथन फिर से चलाएँ। आपको कुंजी कॉलम में आपके द्वारा बनाई गई अनुक्रमणिका देखनी चाहिए।
यदि MySQL इंडेक्स का उपयोग करता है तो आपकी क्वेरी काफी तेज होनी चाहिए। बस याद रखें कि ओवर इंडेक्स न करें। इंडेक्स इन्सर्ट करते हैं, अपडेट करते हैं और धीमे हटाते हैं। जब आप एक टेबल में एक नई पंक्ति डालते हैं और टेबल पर तीन इंडेक्स होते हैं तो नई पंक्ति को तीन अलग-अलग इंडेक्स में 3 मान लिखना होता है। तो यह दोधारी तलवार है।