ไม่เคยใช้ตัวเลือกเช่น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'
เนื่องจากจะอนุญาตให้ใช้ดัชนีโดยไม่ต้องคำนวณ
แก้ไข
ตามที่ระบุไว้โดย Used_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'
ส่วนสำคัญของคำตอบคือการหลีกเลี่ยงตัวเลือกในนิพจน์ที่คำนวณได้แน่นอนว่ายังคงมีอยู่