НИКОГА използвайте селектор като 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'
Същността на отговора, т.е. избягването на селектор върху изчислен израз, разбира се, все още стои.