Не могу оптимизировать запрос.
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, не помогло.
![917f4c977c6245808e250604dd5318f0.png](https://image.prntscr.com/image/917f4c977c6245808e250604dd5318f0.png)
Вот что показывает
EXPLAIN: