У меня есть статистическая таблица, которая растет с большой скоростью (около 25M строк / день), которую я хотел бы оптимизировать для выбора, таблица помещается в память, и на сервере есть много свободной памяти (32G, таблица4G).
Мой простой сводный запрос:
EXPLAIN select FROM_UNIXTIME(FLOOR(endtime/3600)*3600) as ts,sum(numevent1) as success , sum(numevent2) as failure from stats where endtime > UNIX_TIMESTAMP()-3600*96 group by ts order by ts;
+----+-------------+--------------+------+---------------+------+---------+------+----------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+------+---------------+------+---------+------+----------+----------------------------------------------+
| 1 | SIMPLE | stats | ALL | ts | NULL | NULL | NULL | 78238584 | Using where; Using temporary; Using filesort |
+----+-------------+--------------+------+---------------+------+---------+------+----------+----------------------------------------------+
Stats - это таблица innodb, для конечного времени есть нормальный индекс. Как мне оптимизировать это?
Примечание: я планирую добавить сводные таблицы, но в настоящее время это то, с чем я застрял, и мне интересно, можно ли это исправить без дополнительного кода приложения.