GaussDB(DWS)性能调优:性能瓶颈在于聚合计算(group by对应Hash Aggregate算子)案例
【摘要】 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)