Не могу оптимизировать запрос.
SELECT AVG(`timestamp`) as 'grouped_timestamp', AVG(`temperature`), MIN(`temperature`), MAX(`temperature`)
FROM rpi_reg_copy WHERE `timestamp` > UNIX_TIMESTAMP(NOW() - INTERVAL 10 year)
GROUP BY CEIL(`timestamp` / 864000)
ORDER BY 'grouped_timestamp' ASC LIMIT 578
Всего в таблице
4 млн записей. Там хранится время в формате unix timestamp и другие данные, например температура. Интервал между каждой записью 1 минута.
Мне нужно получить средние данные за 10 лет, при этом интервал между каждой точкой должен быть 10 дней (864000 секунд).
Запрос выполняется
8-10 секунд. Причем если меняю GROUP BY CEIL(`timestamp` / 864000) на просто GROUP BY `timestamp`, то запрос выполняется меньше чем за 1 секунду.
Добавлял
индекс для поля timestamp, не помогло.
Вот что показывает
EXPLAIN: