कभी नहीं DATE(datecolumns) = '2012-12-24'
. जैसे चयनकर्ता का उपयोग करें - यह एक प्रदर्शन हत्यारा है:
- यह गणना करेगा
DATE()
उन सभी पंक्तियों के लिए, जिनमें वे भी शामिल हैं, जो मेल नहीं खाती हैं - क्वेरी के लिए इंडेक्स का उपयोग करना असंभव बना देगा
इसका उपयोग करना बहुत तेज़ है
SELECT * FROM tablename
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
क्योंकि यह बिना गणना के सूचकांक के उपयोग की अनुमति देगा।
संपादित करें
जैसा कि Use_By_Already द्वारा इंगित किया गया है, 2012 में प्रारंभिक उत्तर के बाद से, MySQL के उभरे हुए संस्करण हैं, जहां एक दिन के अंत के रूप में '23:59:59' का उपयोग करना अब सुरक्षित नहीं है। एक अद्यतन संस्करण को पढ़ना चाहिए
SELECT * FROM tablename
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'
उत्तर का सार, यानी परिकलित व्यंजक पर चयनकर्ता का परिहार, निश्चित रूप से अभी भी कायम है।