कभी भी एक चयनकर्ता का उपयोग न करें 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'
जवाब का सार, यानी एक परिकलित अभिव्यक्ति पर चयनकर्ता का परिहार, निश्चित रूप से अभी भी खड़ा है।