Заметки, Проекты → Простая SQL-задача
Время от времени приходится решать не тривиальные задачи. Одна из последних: получить даты, когда были какие-либо записи. В день может быть 84600 записей на пользователя (по количеству секунд), соответственно в месяц около 2 600 000 на пользователя. Пользователей — не ограничено (тестировалось на базе в пару сотен пользователей). Индексы проставлены.
Казалось-бы, все элементарно и просто:
SELECT DATE_FORMAT(`date`, '%Y-%m-%d') as `fdate` FROM `user_coord` WHERE `user` = '4' AND `date` > '2013-09' AND `date` < '2013-10' GROUP BY `fdate`
Но, мы же помним, что GROUP BY = зло? Да и время выполнения запроса, 1.5 — 2 секунды, совсем не устраивает. Включаем мозг…
Простая SQL-задача →