TIDAK PERNAH gunakan pemilih seperti DATE(datecolumns) = '2012-12-24'
- itu adalah pembunuh kinerja:
- ini akan menghitung
DATE()
untuk semua baris, termasuk yang tidak cocok - itu akan membuat tidak mungkin menggunakan indeks untuk kueri
Jauh lebih cepat untuk digunakan
SELECT * FROM tablename
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
karena ini akan memungkinkan penggunaan indeks tanpa perhitungan.
EDIT
Seperti yang ditunjukkan oleh Used_By_Already, dalam waktu sejak jawaban awal pada tahun 2012, telah muncul versi MySQL, di mana menggunakan '23:59:59' sebagai akhir hari tidak lagi aman. Versi yang diperbarui harus membaca
SELECT * FROM tablename
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'
Inti dari jawabannya, yaitu penghindaran pemilih pada ekspresi yang dihitung, tentu saja masih berlaku.