У меня есть таблица, в которой перечислены рекламные действия по брендам. Каждое действие записывается одной записью, как показано в файле Excel, который вы можете увидеть в папке диска ниже. В таблице около 7мил записей. Я выполняю несколько запросов, которые выполняются нормально, но я столкнулся с проблемой с одним отчетом c. В этом отчете перечислены и ранжированы клиенты (столбец L в файле Excel) по общей сумме, потраченной на рекламу. Для создания этого отчета требуется около минуты, если установлен диапазон дат от двух месяцев до двух лет.
Ниже представлена копия запроса
select customer_id, sum(value) as value
from `data`
where ((`date` >= '2019-01-01' and `date` <= '2019-12-31'))
group by `customer_id`
order by `value` desc, `customer_id` asc;
Создание этого отчета занимает около минуты, если установлен диапазон дат от 2 месяцев до двух лет. Если мой диапазон дат составляет один месяц или меньше, это займет менее 3 секунд.
Мне нужно, чтобы этот запрос обрабатывался максимум за 10-15 секунд. Мы пытались придумать такие идеи, как создание новой таблицы в БД специально для этого запроса, но мы наткнулись на стену, когда мы увидели, что нам все еще нужно хранить все записи дат, и поэтому мы не можем сгруппировать результаты в таблице.
Мы действительно открыты для любых идей, которые могли бы ускорить этот запрос, включая изменения БД.
Ниже приведена ссылка на папку, которая содержит копию структуры БД и образец набор данных, экспортированный из таблицы данных, которая содержит все данные.
Папка на диске