Я бы предложил сделать:
SELECT COUNT(distinct db_suid),
date_format(from_unixtime(d_utime),'%H') AS H,
date_format(from_unixtime(d_utime),'%Y-%m-%d') AS D
FROM air_vault av
WHERE d_utime >= unix_timestamp(curdate()) and
d_utime < unix_timetamp(curdate() + interval 1 day)
GROUP BY H, D;
Почему логика так сформулирована? Условия в предложении where
могут использовать индекс на d_utime
, если он доступен, или разделы, если данные разбиты на этот столбец. Это может значительно повысить производительность запроса.
Когда столбец является аргументом функции (например, from_unixtime()
), индексы почти никогда не используются.