У меня есть таблица с дневными показателями:
|DateID | Metric1 | Metric2|
20190501 24 34
20190502 25 56
..... .... ....
Таблица содержит более 150 миллионов строк. Он разделен на DateID, в месяц (каждый раздел содержит строки, которые DateID с первого месяца до первого следующего месяца). Некоторые из моих разделов:
rows pages comparison value
4205460 174009 less than 20180801
4205460 174097 less than 20180901
4069800 168449 less than 20181001
4205460 174009 less than 20181101
4069800 168433 less than 20181201
4205460 174097 less than 20190101
4205460 174009 less than 20190201
3798480 157201 less than 20190301
4205460 174097 less than 20190401
4069800 168449 less than 20190501
2984520 123545 less than 20190601
Я бы хотел select sum(metric1), sum(metric2)
в месяц.
Что я делаю до сих пор, так это создаю временную таблицу, которая содержит YYYYMM в качестве MonthID и соединяется с моей таблицей на substring(dateID,1,6) = MonthID
, а затем выбирает группировку сумм по MonthID. Однако это слишком медленно. Я думаю, что было бы быстрее, если бы я мог как-то группировать, используя непосредственно разделы таблицы. Есть ли способ сделать это? Если нет какого-либо способа улучшить общую производительность?