GaussDB(DWS)性能调优:性能瓶颈在于聚合计算(group by对应Hash Aggregate算子)案例

举报
O泡果奶~ 发表于 2023/08/23 10:43:55 2023/08/23
【摘要】 DM场景下,采用best_agg_plan = 3时底层聚合计算(group by对应Hash Aggregate算子)耗时较长且聚合后行数变化不大,该案例主要针对这一类问题利用best_agg_plan hint进行分析解决

1、【问题描述】

DM场景下,语句执行计划为

Vector Hash Aggregate
  Vector Streaming(type: REDISTRIBUTE)
    Vector Hash Aggregate

执行时间在最下边这一层Vector Hash Aggregate增加过多且聚合后行数减少程度不大(<30%)

2、【原始语句】

SELECT /*+ set global(agg_redistribute_enhancement on) set global (best_agg_plan 3)*/dm_ebg_instm_psp_pl_ord_sum_w_v."yyyy",
dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_category_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_cn_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."mm",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."currency_code",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."ptd_amt") as "ptd_amt",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_en_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_type",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."seq_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."cif_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."oversea_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_source",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_account_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."named_account_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_en_name",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."qtd_amt") as "qtd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."ytd_amt") as "ytd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_ptd_amt") as "py_ptd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_qtd_amt") as "py_qtd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_ytd_amt") as "py_ytd_amt" FROM fin_dmr_ebgdis.dm_ebg_instm_psp_pl_ord_sum_w_v where 1=1  and 1=1  AND dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm" = 202307 group by dm_ebg_instm_psp_pl_ord_sum_w_v."yyyy",
dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_category_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_cn_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."mm",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."currency_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_en_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_type",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."seq_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."cif_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."oversea_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_source",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_account_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."named_account_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_en_name" limit 200;

3、【性能分析】

可以看出,存在问题:

  • id=7 Hash Aggregate多余

    该语句hint best_agg_plan = 3,采用了hashagg+redistribute+hashagg的方法。然而,id=7那一层Hash Aggregate并没有降低30%以上的数据量,并且存在耗时过长的效果,影响sql语句执行性能

补充:

best_agg_plan
best_agg_plan = 2

采用方法:

Vector Hash Aggregate
   Vector Streaming(type: REDISTRIBUTE)
best_agg_plan = 3

采用方法:

Vector Hash Aggregate
   Vector Streaming(type: REDISTRIBUTE)
      Vector Hash Aggregate

其中,best_agg_plan = 2适用于DN一次聚集后行数缩减不明显的场景,这时可以以所有数据重分布的代价,省略DN的一次聚集操作。而best_agg_plan = 3适用于DN一次聚集后行数缩减明显的场景

agg_redistribute_enhancement

当进行Agg操作时,如果包含多个group by列且均不为分布列,进行重分布时会选择某一group by列进行重分布(选择估算distinct值最多的一个可重分布列作为重分布列)。——该参数常用于解决运行过程中聚合计算倾斜优化

【解决方法】:

改写旧语句的hint,如下所示

SELECT /*+ set global(agg_redistribute_enhancement on) set global (best_agg_plan 2)*/  
--改动语句 将set global (best_agg_plan 3) 变为 set global (best_agg_plan 2)

dm_ebg_instm_psp_pl_ord_sum_w_v."yyyy",
dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_category_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_cn_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."mm",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."currency_code",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."ptd_amt") as "ptd_amt",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_en_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_type",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."seq_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."cif_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."oversea_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_source",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_account_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."named_account_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_en_name",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."qtd_amt") as "qtd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."ytd_amt") as "ytd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_ptd_amt") as "py_ptd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_qtd_amt") as "py_qtd_amt",
SUM(dm_ebg_instm_psp_pl_ord_sum_w_v."py_ytd_amt") as "py_ytd_amt" FROM fin_dmr_ebgdis.dm_ebg_instm_psp_pl_ord_sum_w_v where 1=1  and 1=1  AND dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm" = 202307 group by dm_ebg_instm_psp_pl_ord_sum_w_v."yyyy",
dm_ebg_instm_psp_pl_ord_sum_w_v."yyyymm",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_category_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_cn_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."mm",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."currency_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."exchange_rate_type_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_en_alias",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_type",
dm_ebg_instm_psp_pl_ord_sum_w_v."report_item_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."seq_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."team_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."biz_scr_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."rpt_scp_item_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."cif_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."region_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."repoffice_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."office_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."geo_pc_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."country_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."oversea_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv0_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv1_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv2_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv3_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv4_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."lv5_prod_list_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_subedition_type_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l0_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l1_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."l2_rgn_tob_ss_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prod_source",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."mngt_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."focus_industry_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."enterprise_cust_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."domtc_entps_indu_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."cust_account_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."named_account_flag",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."na_level",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sub_industry_class_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_num",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_nl_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."ebg_parent_cust_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."prt_na_level_en_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_code",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_cn_name",
dm_ebg_instm_psp_pl_ord_sum_w_v."sales_mode_en_name" limit 200);

改动后的语句执行计划如下所示:

可以看出,少了一层Hash Aggregate提高了语句的执行效率,运行时间从300s+降低到了200s左右

视图原始SQL语句、优化前后的完整执行计划如附件所示

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。