Существует огромная разница в производительности при использовании поля DATE выше поля DATETIME. У меня есть таблица с более чем 4.000.000 записями, и для целей тестирования я добавил 2 поля с их собственным индексом. Один использует DATETIME и другое поле, используя DATE.
Я отключил кэш MySQL запросов, чтобы иметь возможность проверить правильно и накинут тот же запрос для 1000x:
SELECT * FROM `logs` WHERE `dt` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
DATETIME ИНДЕКС: 197,564 секунд.
SELECT * FROM `logs` WHERE `d` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
ИНДЕКС ДАТЫ: 107.577 секунд.
Использование поля с индексом даты имеет улучшение производительности: 45.55%!
Итак, я бы сказал, что если вы ожидаете большого количества данных в таблице, подумайте о том, чтобы отделить дату от времени своим индексом.
Я рассматриваю возможность переключения на отдельные поля даты и времени.моя ситуация заключается в том, что я должен иметь возможность хранить «TBD» раз, когда знаю дату. В настоящее время я использую 12AM в качестве значения для «TBD» раз, но это оказывается больше проблем, чем хотелось бы. Кто-нибудь может найти лучшее решение для TBD раз? или мой предложенный метод работник лучше для них? –