Użycie pola DATE nad polem DATETIME powoduje ogromną różnicę w wydajności. Mam tabelę z ponad 4 000 000 rekordów i do celów testowych dodałem 2 pola z własnym indeksem. Jedno za pomocą DATETIME, a drugie za pomocą DATE.
Wyłączyłem pamięć podręczną zapytań MySQL, aby móc poprawnie testować i zapętlić to samo zapytanie dla 1000x:
SELECT * FROM `logs` WHERE `dt` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
DATETIME INDEX:197,564 sekund.
SELECT * FROM `logs` WHERE `d` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
INDEKS DATY:107,577 sekund.
Użycie pola indeksowanego datą zapewnia poprawę wydajności o:45,55%!!
Powiedziałbym więc, że jeśli spodziewasz się dużej ilości danych w swojej tabeli, rozważ oddzielenie daty od czasu za pomocą własnego indeksu.