Мы используем SAP HANA 1.0 SPS12.
У нас есть дневная таблица, как показано ниже -
выберите trans_date, article, measure1, measure2 из table_1
объем таблицы ~5 миллионов строк
нам нужно увидеть такие данные, как -
select 'day-1',sum(measure1),sum(meaure2) from table1 where trans_date=add_days(current_date,-1) group by 'day-1'
union all
select 'day-2',sum(measure1),sum(meaure2) from table1 where trans_date>=add_days(current_date,-2) group by 'day-2'
union all
select 'WTD',sum(measure1),sum(meaure2) from table1 where trans_date>=add_days(current_date,-7) group by 'WTD'
union all
select 'WTD-1',sum(measure1),sum(meaure2) from table1 where trans_date>=add_days(current_date,-15) and trans_Date <= add_days(current_date,-7) group by 'WTD-1'
и т. Д. Для MTD, MTD-1, MTD-2, YTD.
Производительностьлучше ли использовать WITH CLAUSE и хранить данные в течение одного года, а затем разбивать их в соответствии с временными рамками?ИЛИ Лучше ли использовать отдельное агрегирование для каждого таймфрейма, как показано выше.
Насколько я понимаю, в СУБД, таких как Oracle, WITH CLAUSE материализует результаты и использует их из памяти.SAP HANA - это сама база данных In Memory.Дает ли использование WITH CLAUSE в SAP HANA отличительное преимущество в производительности?
Запрос с использованием WITH CLAUSE -
WITH t1 as
(
select trans_date,sum(measure1),sum(meaure2) from table1 where trans_date>=add_days(current_date,-365)
)
select 'day-1',sum(measure1),sum(meaure2) from t1 where trans_date=add_days(current_date,-1) group by 'day-1'
union all
select 'day-2',sum(measure1),sum(meaure2) from t1 where trans_date>=add_days(current_date,-2) group by 'day-2'
union all
select 'WTD',sum(measure1),sum(meaure2) from t1 where trans_date>=add_days(current_date,-7) group by 'WTD'
union all
select 'WTD-1',sum(measure1),sum(meaure2) from t1 where trans_date>=add_days(current_date,-15)
and trans_Date <= add_days(current_date,-7)
group by 'WTD-1'