MySQL कई कारणों से इंडेक्स का उपयोग करने की अनुशंसा करता है, जिसमें शर्तों के बीच पंक्तियों को समाप्त करना शामिल है:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
यह आपके डेटाटाइम कॉलम को एक इंडेक्स के लिए एक उत्कृष्ट उम्मीदवार बनाता है यदि आप इसे अक्सर प्रश्नों में स्थितियों में उपयोग करने जा रहे हैं। अगर आपकी एकमात्र शर्त है BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY)
और आपके पास इस स्थिति में कोई अन्य अनुक्रमणिका नहीं है, MySQL को पूर्ण तालिका स्कैन करना होगा हर क्वेरी पर। मुझे नहीं पता कि 30 दिनों में कितनी पंक्तियाँ उत्पन्न होती हैं, लेकिन जब तक यह कुल पंक्तियों के लगभग 1/3 से कम है, तब तक यह स्तंभ पर एक सूचकांक का उपयोग करने के लिए अधिक कुशल होगा।
एक कुशल डेटाबेस बनाने के बारे में आपका प्रश्न बहुत व्यापक है। मैं केवल यह सुनिश्चित करने के लिए कहूंगा कि यह सामान्यीकृत है और सभी उपयुक्त कॉलम अनुक्रमित हैं (यानी जो जुड़ने में और जहां खंड में उपयोग किए जाते हैं)।