ALDRIG NOGENSINDE brug en vælger som DATE(datecolumns) = '2012-12-24'
- det er en præstationsdræber:
- den vil beregne
DATE()
for alle rækker, inklusive dem, der ikke matcher - det vil gøre det umuligt at bruge et indeks til forespørgslen
Det er meget hurtigere at bruge
SELECT * FROM tablename
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
da dette vil tillade indeksbrug uden beregning.
REDIGER
Som påpeget af Used_By_Already, er der i tiden siden det første svar i 2012 dukket op versioner af MySQL, hvor det ikke længere er sikkert at bruge '23:59:59' som afslutning på dagen. En opdateret version bør læse
SELECT * FROM tablename
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'
Essensen af svaret, dvs. undgåelsen af en vælger på et beregnet udtryk, står selvfølgelig stadig.