Задавайте вопросы, мы ответим
Вы не зашли.
В базе хранится дата в формате datetime, в запросе нужно использовать только дату (без времени). Используется в конструкции group by. Использую функцию date_format(dt,'%y-%m-%d'), и время выполнения запроса увеличивается в двое. Explain показывает что mysql использует индекс и с date_format и без.
Каким нибудь образом можно оптимизировать такой запрос?
Неактивен
Если вы используете функцию, то индекс по данному столбцу использоваться не будет.
Как вариант храните отдельно время и дату.
Неактивен
А не прокатит тут
LEFT(dt, 10) ?
"2010-09-09 10:40" -> LEFT(dt, 10) -> "2010-09-09"
Все таки первые символы строки. Если формат ДатаВремя хранится как строка.
Неактивен
Ну, если хранить как строку, то можно попробовать. Только не функцией,
а сравнением: WHERE dt LIKE '2010-09-09%'. Но это, мягко сказать, не
самый эффективный способ хранения дат
Неактивен
Нет нет речь как раз о DATETIME типе.
Попрыгал я тут вокруг с бубном, заметил следуюшее:
Для:
Отредактированно vaspet (13.09.2010 12:28:54)
Неактивен
Я же сказал хранить как строку
Разумеется, число нельзя сравнивать строковыми операторами.
Неактивен
datetime хранится как число?
Неактивен
Угу. К тому же — дробным числом
http://en.wikipedia.org/wiki/Double_precision
Целая часть — количество дней с нуля (не epoch!). Дробная — ну, честная
дробь. Т.е. 0.5 ~ 12 часов
Неактивен
Интересно.
Неактивен