首页 > 数据库 >复杂sql优化一例

复杂sql优化一例

时间:2024-05-04 15:55:05浏览次数:21  
标签:一例 bill project num KEY sql nvl 优化 id

sql


insert 
   into 
       register_book_tmp( org_code ,
       org_name ,
       project_number ,
       project_name ,
       product_num ,
       product_name ,
       detail_option ,
       market_yn ,
       asset_number ,
       asset_name ,
       account_number ,
       account_name ,
       split_yn ,
       customer_number ,
       customer_name ,
       holding_rate ,
       str_cost ,
       add_cost ,
       reduce_cost ,
       end_cost ,
       str_mkt_value_chg ,
       add_mkt_value_chg ,
       reduce_mkt_value_chg ,
       end_mkt_value_chg ,
       str_cost_impairment_provision ,
       add_impairment_provision ,
       reduce_impairment_provision ,
       end_cost_impairment_provision ,
       months_invest_income_hold ,
       years_invest_income_hold )
WITH TMP_PBPSI as 
     ( select pb.project_id,
             pb.project_number,
             pb.project_name,
             pb.belong_org,
             psi.project_id as psiproject_id,
             psi.split_unit,
             psi.split_type
        from amc_base_project_b pb,
             amc_project_split_info_b psi
       where 1=1
     )
SELECT   pd.deptcode "deptcode",
       pd.deptname "deptname",
       /*pb.project_number "project_number1",
       pb.project_name "project_name1", */
       pbpsi.project_number "project_number1",
       pbpsi.project_name "project_name1",
       aib.product_num "product_num1",
       ptv.prod_type_combined "product_name1", (SELECT pc.parana
          FROM pcmc_knp_para pc
         WHERE pc.paratp = 'GWAMCC_DETAIL_OPTION'
           AND pc.paracd = aib.detail_option) "detail_option", (SELECT pc.parana
          FROM pcmc_knp_para pc
         WHERE pc.paratp = 'GWAMCC_YES_NO'
           AND pc.paracd = cb.market_yn) "market_yn",
       epb.asset_number "asset_number",
       epb.asset_name "asset_name",
       aib.account_number "account_number",
       aib.account_name "account_name",
       --nvl2(psi.project_id, '1', '2') "split_yn",
       nvl2(pbpsi.psiproject_id, '1', '2') "split_yn",
       epb.customer_number "customer_number",
       epb.customer_name "customer_name",
       epb.holding_rate "holding_rate",
       nvl(sebv1.cost,0) "str_cost",
       nvl(aas2.add_cost,0) "add_cost",
       nvl(aas2.reduce_cost,0) "reduce_cost",
       nvl(sebv2.cost,0) "end_cost",
       nvl(sebv1.mkt_value_chg,0) "str_mkt_value_chg",
       nvl(aas2.add_mkt_value_chg,0) "add_mkt_value_chg",
       nvl(aas2.reduce_mkt_value_chg,0) "reduce_mkt_value_chg",
       nvl(sebv2.mkt_value_chg,0) "end_mkt_value_chg",
       nvl(sebv1.cost_impairment_provision,0) "str_cost_impairment_provision",
       nvl(aas2.add_impairment_provision,0) "add_impairment_provision",
       nvl(aas2.reduce_impairment_provision,0) "reduce_impairment_provision",
       nvl(sebv2.cost_impairment_provision,0) "end_cost_impairment_provision",
       nvl(aas6.months_invest_income_hold,0) "months_invest_income_hold",
       nvl(aas4.years_invest_income_hold,0) "years_invest_income_hold"
  FROM amc_asset_account_info_b aib,
       tmp_pbpsi pbpsi,
       --amc_base_project_b pb,
       pcmc_dept pd, (SELECT  *
          FROM amc_bill_asset_line_b b
         WHERE 1 = 1
           AND b.bill_id IN (SELECT MAX(balb.bill_id)
                   FROM amc_bill_asset_line_b balb,
                        amc_bill_asset_head_b b1,
                        amc_bill_equity_page_b bepb
                  WHERE 1 = 1
                    AND balb.bill_id = b1.bill_id
                    AND balb.asset_orginal_id = bepb.asset_orginal_id
                    AND (b1.business_stage = 'INVEST_STAGE'
                              OR (b1.business_type = 'NORMAL_DISPOSAL'
                                      AND bepb.dispose_flag = 'Y'))
                    AND ((b1.entry_status IN ('PL',
                                              'GL')
                                      and b1.manual_bill='N')
                              or (b1.entry_status ='SL'
                                      and b1.manual_bill='Y'))
                    AND to_char(b1.gl_date, 'yyyy-mm-dd') <= '2024-04-07'
               GROUP BY balb.account_id)) alb,
       amc_bill_equity_page_b epb,
       xxt_coa_prod_type_v ptv,
       amc_base_customer_b cb,
       --amc_project_split_info_b psi,
       (SELECT   ebv1.account_id,
               ebv1.cost,
               ebv1.mkt_value_chg,
               ebv1.cost_impairment_provision,
               ebv1.belong_org
          FROM xxt_sl_asset_details_balance_tmp ebv1
         WHERE ebv1.event_id IN (SELECT MAX(ebv2.event_id)
                   FROM xxt_sl_asset_details_balance_tmp ebv2
                  WHERE to_char(ebv2.accounting_date, 'yyyy-mm-dd') < '2024-04-07'
               GROUP BY ebv2.account_id,
                        ebv2.project_id,
                        ebv2.belong_org)) sebv1, (SELECT ebv3.account_id,
               ebv3.cost,
               ebv3.mkt_value_chg,
               ebv3.cost_impairment_provision,
               ebv3.belong_org
          FROM xxt_sl_asset_details_balance_tmp ebv3
         WHERE ebv3.event_id IN (SELECT MAX(ebv4.event_id)
                   FROM xxt_sl_asset_details_balance_tmp ebv4
                  WHERE to_char(ebv4.accounting_date, 'yyyy-mm-dd') <= '2024-04-07'
               GROUP BY ebv4.account_id,
                        ebv4.project_id,
                        ebv4.belong_org)) sebv2, (SELECT   balb1.account_id,
                aas1.segment1,
                SUM(decode(xcb1.attribute3,
                                    'COST', aas1.entered_dr,
                                    0)) add_cost,
                SUM(decode(xcb1.attribute3,
                                    'COST', aas1.entered_cr,
                                    0)) reduce_cost,
                SUM(decode(xcb1.attribute3,
                                    'MKT_VALUE_CHG', aas1.entered_dr,
                                    0)) add_mkt_value_chg,
                SUM(decode(xcb1.attribute3,
                                    'MKT_VALUE_CHG', aas1.entered_cr,
                                    0)) reduce_mkt_value_chg,
                SUM(decode(xcb1.attribute3,
                                    'COST_IMPAIRMENT_PROVISION', aas1.entered_cr,
                                    0)) add_impairment_provision,
                SUM(decode(xcb1.attribute3,
                                    'COST_IMPAIRMENT_PROVISION', aas1.entered_dr,
                                    0)) reduce_impairment_provision,
                SUM(decode(xcb1.attribute3,
                                    'RECEIVABLE_DIVIDEND', aas1.entered_cr - aas1.entered_dr,
                                    0)) months_invest_income_hold
           FROM amc_entry_sl_v aas1,
                amc_bill_asset_line_b balb1,
                xxt_sl_coa_balance_v xcb1,
                amc_bill_asset_head_b bahb1
          WHERE aas1.entity_id = balb1.bill_line_id
            AND aas1.segment3 = xcb1.flex_value
            AND balb1.bill_id = bahb1.bill_id
            AND ((bahb1.entry_status IN ('PL',
                                         'GL')
                              and bahb1.manual_bill='N')
                      or (bahb1.entry_status='SL'
                              and bahb1.manual_bill='Y'))
            AND aas1.entity_category = 'BAD_ASSETS'
            AND aas1.relation_target = 'EVENT'
            AND (('2024-04-07' <= to_char(aas1.accounting_date, 'yyyy-mm-dd')
                              and '2024-04-07' >= to_char(aas1.accounting_date, 'yyyy-mm-dd')))
       GROUP BY balb1.account_id,
                aas1.segment1) aas2, (SELECT   balb5.account_id,
                aas5.segment1,
                SUM(aas5.entered_cr - aas5.entered_dr) months_invest_income_hold
           FROM amc_entry_sl_v aas5,
                amc_bill_asset_line_b balb5,
                xxt_sl_coa_balance_v xcb5,
                amc_bill_asset_head_b bahb5
          WHERE aas5.entity_id = balb5.bill_line_id
            AND aas5.segment3 = xcb5.flex_value
            AND balb5.bill_id = bahb5.bill_id
            AND bahb5.business_stage = 'HANDLE_STAGE'
            AND ((bahb5.entry_status IN ('PL',
                                         'GL')
                              and bahb5.manual_bill='N')
                      or (bahb5.entry_status='SL'
                              and bahb5.manual_bill='Y'))
            AND xcb5.attribute3 = 'REC_DIVIDEND'
            AND aas5.entity_category = 'BAD_ASSETS'
            AND aas5.relation_target = 'EVENT'
            AND (('2024-04-07' <= to_char(aas5.accounting_date, 'yyyy-mm-dd')
                              and '2024-04-07' >= to_char(aas5.accounting_date, 'yyyy-mm-dd')))
       GROUP BY balb5.account_id,
                aas5.segment1) aas6, (SELECT    balb3.account_id,
                aas3.segment1,
                (SUM(aas3.entered_cr) - SUM(aas3.entered_dr)) years_invest_income_hold
           FROM amc_entry_sl_v aas3,
                amc_bill_asset_line_b balb3,
                xxt_sl_coa_balance_v xcb3,
                amc_bill_asset_head_b bahb3
          WHERE aas3.entity_id = balb3.bill_line_id
            AND aas3.segment3 = xcb3.flex_value
            AND balb3.bill_id = bahb3.bill_id
            AND ((bahb3.entry_status IN ('PL',
                                         'GL')
                              and bahb3.manual_bill='N')
                      or (bahb3.entry_status='SL'
                              and bahb3.manual_bill='Y'))
            AND bahb3.business_stage = 'HANDLE_STAGE'
            AND xcb3.attribute3 = 'REC_DIVIDEND'
            AND aas3.entity_category = 'BAD_ASSETS'
            AND aas3.relation_target = 'EVENT'
            AND to_char(aas3.accounting_date, 'yyyy-mm-dd') <= '2024-04-07'
       GROUP BY balb3.account_id,
                aas3.segment1) aas4
 WHERE --aib.project_id = pb.project_id
       aib.project_id = pbpsi.project_id
       --AND nvl(psi.split_unit,pb.belong_org) = pd.deptcode
   AND nvl(pbpsi.split_unit,pbpsi.belong_org) = pd.deptcode
   AND aib.account_id = alb.account_id
   AND alb.asset_orginal_id = epb.asset_orginal_id
   AND aib.product_num = ptv.prod_type_code
   AND epb.customer_number = cb.customer_number
   AND (aib.detail_option IN ('HOLDING_SUBSIDIARY',
                              'JOINT_CONT_SIGN_INFL')
           OR aib.product_num IN ('2010010101',
                                  '2010010201',
                                  '2010010301',
                                  '2010010401',
                                  '2010010501',
                                  '2010010601',
                                  '2010010701',
                                  '2010010801',
                                  '2010020101',
                                  '2010020201'))
   AND aib.account_id = sebv1.account_id(+)
   AND aib.account_id = sebv2.account_id(+)
   AND aib.account_id = aas2.account_id(+)
   AND aib.account_id = aas6.account_id(+)
   AND aib.account_id = aas4.account_id(+)
       /* AND nvl(psi.split_unit,pb.belong_org) = sebv1.belong_org(+)
       AND nvl(psi.split_unit,pb.belong_org) = sebv2.belong_org(+)
       AND nvl(psi.split_unit,pb.belong_org) = aas2.segment1(+)
       AND nvl(psi.split_unit,pb.belong_org) = aas4.segment1(+)
       AND nvl(psi.split_unit,pb.belong_org) = aas6.segment1(+)
       AND aib.project_id = psi.project_id(+)
       AND nvl(psi.split_type,'0') <> '1'*/
   AND nvl(pbpsi.split_unit,pbpsi.belong_org) = sebv1.belong_org(+)
   AND nvl(pbpsi.split_unit,pbpsi.belong_org) = sebv2.belong_org(+)
   AND nvl(pbpsi.split_unit,pbpsi.belong_org) = aas2.segment1(+)
   AND nvl(pbpsi.split_unit,pbpsi.belong_org) = aas4.segment1(+)
   AND nvl(pbpsi.split_unit,pbpsi.belong_org) = aas6.segment1(+)
   AND aib.project_id = pbpsi.project_id(+)
   AND nvl(pbpsi.split_type,'0') <> '1' ;

执行计划


1   #INSERT : [0, 0, 0]; table(REGISTER_BOOK_TMP), type(select), hp_opt(0), mpp_opt(0)
2     #PIPE2: [470, 66, 9868] 
3       #PIPE2: [470, 66, 9868] 
4         #PIPE2: [470, 66, 9868] 
5           #PIPE2: [460, 66, 9868] 
6             #PIPE2: [450, 66, 9868] 
7               #PIPE2: [440, 66, 9868] 
8                 #PIPE2: [430, 66, 9868] 
9                   #PIPE2: [420, 66, 9868] 
10                    #PRJT2: [35, 66, 9868]; exp_num(30), is_atom(FALSE) 
11                      #UNION FOR OR2: [35, 66, 9868]; key_num(0), outer_join(-)
12                        #HASH RIGHT SEMI JOIN2: [17, 33, 9868]; n_keys(1) KEY(DMTEMPVIEW_889785542.colname=DMTEMPVIEW_889785386.TMPCOL3) KEY_NULL_EQU(0)
13                          #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1)
14                          #HEAP TABLE SCAN: [17, 665, 9868]; table_no(0) 
15                        #HASH RIGHT SEMI JOIN2: [17, 33, 9868]; n_keys(1) KEY(DMTEMPVIEW_889785543.colname=DMTEMPVIEW_889785386.TMPCOL2) KEY_NULL_EQU(0)
16                          #CONST VALUE LIST: [1, 10, 48]; row_num(10), col_num(1)
17                          #SLCT2: [17, 33, 9868]; exp11
18                            #HEAP TABLE SCAN: [17, 665, 9868]; table_no(0) 
19                    #HEAP TABLE: [384, 665, 9868]; table_no(0) full(0), mpp_full(0) autoid(0), sites(-)
20                      #HASH2 INNER JOIN: [384, 665, 9868]; RKEY_UNIQUE KEY_NUM(1); KEY(exp11=PD.DEPTCODE) KEY_NULL_EQU(0)
21                        #HASH2 INNER JOIN: [382, 665, 9772];  KEY_NUM(1); KEY(PTV.PROD_TYPE_CODE=AIB.PRODUCT_NUM) KEY_NULL_EQU(0)
22                          #PRJT2: [1, 222, 816]; exp_num(2), is_atom(FALSE) 
23                            #CSCN2: [1, 222, 816]; INDEX33558407(XXT_COA_PROD_TYPE_B); btr_scan(1)
24                          #SLCT2: [379, 665, 8956]; AIB.ACCOUNT_ID = ALB.ACCOUNT_ID
25                            #NEST LOOP INNER JOIN2: [379, 665, 8956]; [with var]
26                              #HASH2 INNER JOIN: [34, 63, 3550];  KEY_NUM(1); KEY(ALB.ASSET_ORGINAL_ID=EPB.ASSET_ORGINAL_ID) KEY_NULL_EQU(0)
27                                #PRJT2: [25, 64, 3202]; exp_num(2), is_atom(FALSE) 
28                                  #NEST LOOP INDEX JOIN2: [25, 64, 3202] 
29                                    #DISTINCT: [24, 8, 439]
30                                      #PRJT2: [23, 8, 439]; exp_num(1), is_atom(FALSE) 
31                                        #HAGR2: [23, 8, 439]; grp_num(1), sfun_num(1), distinct_flag[0]; slave_empty(0) keys(BALB.ACCOUNT_ID) 
32                                          #UNION FOR OR2: [22, 283, 439]; key_num(0), outer_join(-)
33                                            #UNION FOR OR2: [19, 136, 439]; key_num(0), outer_join(-)
34                                              #UNION FOR OR2: [3, 15, 439]; key_num(0), outer_join(-)
35                                                #HASH2 INNER JOIN: [1, 8, 439];  KEY_NUM(1); KEY(BALB.ASSET_ORGINAL_ID=BEPB.ASSET_ORGINAL_ID) KEY_NULL_EQU(0)
36                                                  #NEST LOOP INDEX JOIN2: [1, 8, 349] 
37                                                    #SLCT2: [1, 1, 247]; B1.MANUAL_BILL = 'Y'
38                                                      #BLKUP2: [1, 2, 247]; AMC_BILL_ASSET_HEAD_U3(B1)
39                                                        #SLCT2: [1, 2, 247]; exp11 <= '2024-04-07'
40                                                          #SSEK2: [1, 2, 247]; scan_type(ASC), AMC_BILL_ASSET_HEAD_U3(AMC_BILL_ASSET_HEAD_B as B1), scan_range[('INVEST_STAGE','SL',min),('INVEST_STAGE','SL',max))
41                                                    #BLKUP2: [1, 8, 30]; AMC_BILL_ASSET_LINE_B_DSH0320_01(BALB)
42                                                      #SSEK2: [1, 8, 30]; scan_type(ASC), AMC_BILL_ASSET_LINE_B_DSH0320_01(AMC_BILL_ASSET_LINE_B as BALB), scan_range[B1.BILL_ID,B1.BILL_ID]
43                                                  #CSCN2: [1, 1204, 90]; INDEX33557178(AMC_BILL_EQUITY_PAGE_B as BEPB); btr_scan(1)
44                                                #HASH2 INNER JOIN: [1, 7, 439];  KEY_NUM(1); KEY(BALB.ASSET_ORGINAL_ID=BEPB.ASSET_ORGINAL_ID) KEY_NULL_EQU(0)
45                                                  #NEST LOOP INDEX JOIN2: [1, 8, 349] 
46                                                    #SLCT2: [1, 1, 247]; (B1.BUSINESS_TYPE = 'NORMAL_DISPOSAL' AND B1.MANUAL_BILL = 'Y' AND exp11 <= '2024-04-07' AND exp11)
47                                                      #BLKUP2: [1, 54, 247]; AMC_BILL_ASSET_HEAD_B_DSH0320_01(B1)
48                                                        #SSEK2: [1, 54, 247]; scan_type(ASC), AMC_BILL_ASSET_HEAD_B_DSH0320_01(AMC_BILL_ASSET_HEAD_B as B1), scan_range['SL','SL']
49                                                    #BLKUP2: [1, 8, 30]; AMC_BILL_ASSET_LINE_B_DSH0320_01(BALB)
50                                                      #SSEK2: [1, 8, 30]; scan_type(ASC), AMC_BILL_ASSET_LINE_B_DSH0320_01(AMC_BILL_ASSET_LINE_B as BALB), scan_range[B1.BILL_ID,B1.BILL_ID]
51                                                  #SLCT2: [1, 147, 90]; BEPB.DISPOSE_FLAG = 'Y'
52                                                    #CSCN2: [1, 1204, 90]; INDEX33557178(AMC_BILL_EQUITY_PAGE_B as BEPB); btr_scan(1)
53                                              #SLCT2: [15, 120, 439]; exp11
54                                                #HASH2 INNER JOIN: [15, 120, 439];  KEY_NUM(1); KEY(BALB.BILL_ID=B1.BILL_ID) KEY_NULL_EQU(0)
55                                                  #NEST LOOP INDEX JOIN2: [8, 1204, 192] 
56                                                    #CSCN2: [1, 1204, 90]; INDEX33557178(AMC_BILL_EQUITY_PAGE_B as BEPB); btr_scan(1)
57                                                    #BLKUP2: [7, 1, 30]; AMC_BILL_ASSET_LINE_N2(BALB)
58                                                      #SSEK2: [7, 1, 30]; scan_type(ASC), AMC_BILL_ASSET_LINE_N2(AMC_BILL_ASSET_LINE_B as BALB), scan_range[BEPB.ASSET_ORGINAL_ID,BEPB.ASSET_ORGINAL_ID]
59                                                  #SLCT2: [5, 4003, 247]; (B1.MANUAL_BILL = 'N' AND exp11)
60                                                    #NEST LOOP INDEX JOIN2: [5, 4003, 247] 
61                                                      #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1)
62                                                      #BLKUP2: [5, 2001, 247]; AMC_BILL_ASSET_HEAD_U3(B1)
63                                                        #SLCT2: [5, 2001, 247]; exp11 <= '2024-04-07'
64                                                          #SSEK2: [5, 2001, 247]; scan_type(ASC), AMC_BILL_ASSET_HEAD_U3(AMC_BILL_ASSET_HEAD_B as B1), scan_range[('INVEST_STAGE',DMTEMPVIEW_889785405.colname,min),('INVEST_STAGE',DMTEMPVIEW_889785405.colname,max))
65                                            #HASH RIGHT SEMI JOIN2: [2, 147, 439]; n_keys(1) KEY(DMTEMPVIEW_889785544.colname=B1.ENTRY_STATUS) KEY_NULL_EQU(0)
66                                              #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1)
67                                              #SLCT2: [2, 147, 439]; (B1.BUSINESS_TYPE = 'NORMAL_DISPOSAL' AND B1.MANUAL_BILL = 'N' AND exp11 <= '2024-04-07' AND exp11 AND exp11 AND exp11)
68                                                #NEST LOOP INDEX JOIN2: [2, 147, 439] 
69                                                  #NEST LOOP INDEX JOIN2: [1, 147, 192] 
70                                                    #SLCT2: [1, 147, 90]; BEPB.DISPOSE_FLAG = 'Y'
71                                                      #CSCN2: [1, 1204, 90]; INDEX33557178(AMC_BILL_EQUITY_PAGE_B as BEPB); btr_scan(1)
72                                                    #BLKUP2: [1, 1, 30]; AMC_BILL_ASSET_LINE_N2(BALB)
73                                                      #SSEK2: [1, 1, 30]; scan_type(ASC), AMC_BILL_ASSET_LINE_N2(AMC_BILL_ASSET_LINE_B as BALB), scan_range[BEPB.ASSET_ORGINAL_ID,BEPB.ASSET_ORGINAL_ID]
74                                                  #BLKUP2: [1, 1, 30]; INDEX33557203(B1)
75                                                    #SSEK2: [1, 1, 30]; scan_type(ASC), INDEX33557203(AMC_BILL_ASSET_HEAD_B as B1), scan_range[BALB.BILL_ID,BALB.BILL_ID]
76                                    #BLKUP2: [1, 8, 30]; AMC_BILL_ASSET_LINE_B_DSH0320_01(B)
77                                      #SSEK2: [1, 8, 30]; scan_type(ASC), AMC_BILL_ASSET_LINE_B_DSH0320_01(AMC_BILL_ASSET_LINE_B as B), scan_range[DMTEMPVIEW_889785383.colname,DMTEMPVIEW_889785383.colname]
78                                #NEST LOOP INDEX JOIN2: [8, 1204, 348] 
79                                  #CSCN2: [1, 1204, 252]; INDEX33557178(AMC_BILL_EQUITY_PAGE_B as EPB); btr_scan(1)
80                                  #BLKUP2: [7, 1, 48]; INDEX33558472(CB)
81                                    #SSEK2: [7, 1, 48]; scan_type(ASC), INDEX33558472(AMC_BASE_CUSTOMER_B as CB), scan_range[EPB.CUSTOMER_NUMBER,EPB.CUSTOMER_NUMBER]
82                              #HASH RIGHT JOIN2: [58, 83, 5406]; key_num(1), ret_null(0), KEY(AAS4.SEGMENT1=exp11)
83                                #PRJT2: [10, 8, 1502]; exp_num(2), is_atom(FALSE) 
84                                  #HAGR2: [10, 8, 1502]; grp_num(2), sfun_num(2), distinct_flag[0,0]; slave_empty(0) keys(BALB3.ACCOUNT_ID, AAS3.SEGMENT1) 
85                                    #UNION FOR OR2: [9, 84, 1502]; key_num(0), outer_join(-)
86                                      #HASH2 INNER JOIN: [3, 9, 1502];  KEY_NUM(1); KEY(AAS3.SEGMENT3=XCB3.FLEX_VALUE) KEY_NULL_EQU(0)
87                                        #HASH2 INNER JOIN: [2, 3, 1406];  KEY_NUM(1); KEY(BALB3.BILL_LINE_ID=AAS3.ENTITY_ID) KEY_NULL_EQU(0)
88                                          #NEST LOOP INDEX JOIN2: [1, 1, 288] 
89                                            #SLCT2: [1, 1, 186]; BAHB3.MANUAL_BILL = 'Y'
90                                              #BLKUP2: [1, 11, 186]; AMC_BILL_ASSET_HEAD_U3(BAHB3)
91                                                #SSEK2: [1, 11, 186]; scan_type(ASC), AMC_BILL_ASSET_HEAD_U3(AMC_BILL_ASSET_HEAD_B as BAHB3), scan_range[('HANDLE_STAGE','SL',min),('HANDLE_STAGE','SL',max))
92                                            #SSEK2: [1, 1, 90]; scan_type(ASC), INDEX33559143(AMC_BILL_ASSET_LINE_B as BALB3), scan_range[(BAHB3.BILL_ID,var19,min),(BAHB3.BILL_ID,var19,max))
93                                          #HEAP TABLE SCAN: [1, 50, 1118]; table_no(4) 
94                                        #HEAP TABLE SCAN: [1, 25, 96]; table_no(5) 
95                                      #HASH2 INNER JOIN: [4, 75, 1502];  KEY_NUM(1); KEY(XCB3.FLEX_VALUE=AAS3.SEGMENT3) KEY_NULL_EQU(0)
96                                        #HEAP TABLE SCAN: [1, 25, 96]; table_no(5) 
97                                        #HASH2 INNER JOIN: [2, 30, 1406];  KEY_NUM(1); KEY(BALB3.BILL_LINE_ID=AAS3.ENTITY_ID) KEY_NULL_EQU(0)
98                                          #HASH RIGHT SEMI JOIN2: [1, 10, 288]; n_keys(1) KEY(DMTEMPVIEW_889785545.colname=BAHB3.ENTRY_STATUS) KEY_NULL_EQU(0)
99                                            #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1)
100                                           #SLCT2: [1, 10, 288]; (BAHB3.MANUAL_BILL = 'N' AND BAHB3.BUSINESS_STAGE = 'HANDLE_STAGE' AND exp11)
101                                             #NEST LOOP INDEX JOIN2: [1, 10, 288] 
102                                               #BLKUP2: [1, 10, 102]; AMC_BILL_ASSET_LINE_N1(BALB3)
103                                                 #SSEK2: [1, 10, 102]; scan_type(ASC), AMC_BILL_ASSET_LINE_N1(AMC_BILL_ASSET_LINE_B as BALB3), scan_range[var19,var19]
104                                               #BLKUP2: [1, 1, 30]; INDEX33557203(BAHB3)
105                                                 #SSEK2: [1, 1, 30]; scan_type(ASC), INDEX33557203(AMC_BILL_ASSET_HEAD_B as BAHB3), scan_range[BALB3.BILL_ID,BALB3.BILL_ID]
106                                         #HEAP TABLE SCAN: [1, 50, 1118]; table_no(4) 
107                               #HASH RIGHT JOIN2: [47, 83, 3904]; key_num(1), ret_null(0), KEY(AAS6.SEGMENT1=exp11)
108                                 #PRJT2: [10, 8, 1502]; exp_num(2), is_atom(FALSE) 
109                                   #HAGR2: [10, 8, 1502]; grp_num(2), sfun_num(1), distinct_flag[0]; slave_empty(0) keys(DMTEMPVIEW_889785378.TMPCOL0, DMTEMPVIEW_889785378.TMPCOL1) 
110                                     #PRJT2: [9, 84, 1502]; exp_num(3), is_atom(FALSE) 
111                                       #UNION FOR OR2: [9, 84, 1502]; key_num(0), outer_join(-)
112                                         #HASH2 INNER JOIN: [3, 9, 1502];  KEY_NUM(1); KEY(AAS5.SEGMENT3=XCB5.FLEX_VALUE) KEY_NULL_EQU(0)
113                                           #HASH2 INNER JOIN: [2, 3, 1406];  KEY_NUM(1); KEY(BALB5.BILL_LINE_ID=AAS5.ENTITY_ID) KEY_NULL_EQU(0)
114                                             #NEST LOOP INDEX JOIN2: [1, 1, 288] 
115                                               #SLCT2: [1, 1, 186]; BAHB5.MANUAL_BILL = 'Y'
116                                                 #BLKUP2: [1, 11, 186]; AMC_BILL_ASSET_HEAD_U3(BAHB5)
117                                                   #SSEK2: [1, 11, 186]; scan_type(ASC), AMC_BILL_ASSET_HEAD_U3(AMC_BILL_ASSET_HEAD_B as BAHB5), scan_range[('HANDLE_STAGE','SL',min),('HANDLE_STAGE','SL',max))
118                                               #SSEK2: [1, 1, 90]; scan_type(ASC), INDEX33559143(AMC_BILL_ASSET_LINE_B as BALB5), scan_range[(BAHB5.BILL_ID,var19,min),(BAHB5.BILL_ID,var19,max))
119                                             #HEAP TABLE SCAN: [1, 50, 1118]; table_no(2) 
120                                           #HEAP TABLE SCAN: [1, 25, 96]; table_no(3) 
121                                         #HASH2 INNER JOIN: [4, 75, 1502];  KEY_NUM(1); KEY(XCB5.FLEX_VALUE=AAS5.SEGMENT3) KEY_NULL_EQU(0)
122                                           #HEAP TABLE SCAN: [1, 25, 96]; table_no(3) 
123                                           #HASH2 INNER JOIN: [2, 30, 1406];  KEY_NUM(1); KEY(BALB5.BILL_LINE_ID=AAS5.ENTITY_ID) KEY_NULL_EQU(0)
124                                             #HASH RIGHT SEMI JOIN2: [1, 10, 288]; n_keys(1) KEY(DMTEMPVIEW_889785546.colname=BAHB5.ENTRY_STATUS) KEY_NULL_EQU(0)
125                                               #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1)
126                                               #SLCT2: [1, 10, 288]; (BAHB5.MANUAL_BILL = 'N' AND BAHB5.BUSINESS_STAGE = 'HANDLE_STAGE' AND exp11)
127                                                 #NEST LOOP INDEX JOIN2: [1, 10, 288] 
128                                                   #BLKUP2: [1, 10, 102]; AMC_BILL_ASSET_LINE_N1(BALB5)
129                                                     #SSEK2: [1, 10, 102]; scan_type(ASC), AMC_BILL_ASSET_LINE_N1(AMC_BILL_ASSET_LINE_B as BALB5), scan_range[var19,var19]
130                                                   #BLKUP2: [1, 1, 30]; INDEX33557203(BAHB5)
131                                                     #SSEK2: [1, 1, 30]; scan_type(ASC), INDEX33557203(AMC_BILL_ASSET_HEAD_B as BAHB5), scan_range[BALB5.BILL_ID,BALB5.BILL_ID]
132                                             #HEAP TABLE SCAN: [1, 50, 1118]; table_no(2) 
133                                 #HASH RIGHT JOIN2: [36, 83, 2402]; key_num(1), ret_null(0), KEY(AAS2.SEGMENT1=exp11)
134                                   #PRJT2: [28, 10, 1454]; exp_num(7), is_atom(FALSE) 
135                                     #HAGR2: [28, 10, 1454]; grp_num(2), sfun_num(6), distinct_flag[0,0,0,0,0,0]; slave_empty(0) keys(DMTEMPVIEW_889785375.TMPCOL0, DMTEMPVIEW_889785375.TMPCOL1) 
136                                       #PRJT2: [27, 101, 1454]; exp_num(8), is_atom(FALSE) 
137                                         #UNION FOR OR2: [27, 101, 1454]; key_num(0), outer_join(-)
138                                           #HASH2 INNER JOIN: [13, 9, 1454];  KEY_NUM(1); KEY(AAS1.SEGMENT3=XCB1.FLEX_VALUE) KEY_NULL_EQU(0)
139                                             #HASH2 INNER JOIN: [2, 3, 1358];  KEY_NUM(1); KEY(BALB1.BILL_LINE_ID=AAS1.ENTITY_ID) KEY_NULL_EQU(0)
140                                               #NEST LOOP INDEX JOIN2: [1, 1, 240] 
141                                                 #SLCT2: [1, 1, 138]; BAHB1.MANUAL_BILL = 'Y'
142                                                   #BLKUP2: [1, 54, 138]; AMC_BILL_ASSET_HEAD_B_DSH0320_01(BAHB1)
143                                                     #SSEK2: [1, 54, 138]; scan_type(ASC), AMC_BILL_ASSET_HEAD_B_DSH0320_01(AMC_BILL_ASSET_HEAD_B as BAHB1), scan_range['SL','SL']
144                                                 #SSEK2: [1, 1, 90]; scan_type(ASC), INDEX33559143(AMC_BILL_ASSET_LINE_B as BALB1), scan_range[(BAHB1.BILL_ID,var19,min),(BAHB1.BILL_ID,var19,max))
145                                               #HEAP TABLE SCAN: [1, 50, 1118]; table_no(1) 
146                                             #PRJT2: [10, 1000, 96]; exp_num(2), is_atom(FALSE) 
147                                               #REMOTE SCAN: [10, 1000, 96]; TMPREMOTETAB889785366@TOEBS
148                                           #HASH2 INNER JOIN: [13, 92, 1454];  KEY_NUM(1); KEY(AAS1.SEGMENT3=XCB1.FLEX_VALUE) KEY_NULL_EQU(0)
149                                             #HASH2 INNER JOIN: [2, 30, 1358];  KEY_NUM(1); KEY(BALB1.BILL_LINE_ID=AAS1.ENTITY_ID) KEY_NULL_EQU(0)
150                                               #HASH RIGHT SEMI JOIN2: [1, 10, 240]; n_keys(1) KEY(DMTEMPVIEW_889785547.colname=BAHB1.ENTRY_STATUS) KEY_NULL_EQU(0)
151                                                 #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1)
152                                                 #SLCT2: [1, 10, 240]; (BAHB1.MANUAL_BILL = 'N' AND exp11)
153                                                   #NEST LOOP INDEX JOIN2: [1, 10, 240] 
154                                                     #BLKUP2: [1, 10, 102]; AMC_BILL_ASSET_LINE_N1(BALB1)
155                                                       #SSEK2: [1, 10, 102]; scan_type(ASC), AMC_BILL_ASSET_LINE_N1(AMC_BILL_ASSET_LINE_B as BALB1), scan_range[var19,var19]
156                                                     #BLKUP2: [1, 1, 30]; INDEX33557203(BAHB1)
157                                                       #SSEK2: [1, 1, 30]; scan_type(ASC), INDEX33557203(AMC_BILL_ASSET_HEAD_B as BAHB1), scan_range[BALB1.BILL_ID,BALB1.BILL_ID]
158                                               #HEAP TABLE SCAN: [1, 50, 1118]; table_no(1) 
159                                             #PRJT2: [10, 1000, 96]; exp_num(2), is_atom(FALSE) 
160                                               #REMOTE SCAN: [10, 1000, 96]; TMPREMOTETAB889785366@TOEBS
161                                   #HASH RIGHT JOIN2: [6, 83, 948]; key_num(1), ret_null(0), KEY(SEBV2.BELONG_ORG=exp11)
162                                     #PRJT2: [2, 1, 198]; exp_num(4), is_atom(FALSE) 
163                                       #HASH LEFT SEMI JOIN2: [2, 1, 198]; KEY_NUM(1);  KEY(EBV3.EVENT_ID=DMTEMPVIEW_889785372.colname) KEY_NULL_EQU(0)
164                                         #SLCT2: [1, 1, 198]; EBV3.ACCOUNT_ID = var19
165                                           #CSCN2: [1, 1, 198]; INDEX33557737(XXT_SL_ASSET_DETAILS_BALANCE_TMP as EBV3); btr_scan(1)
166                                         #PRJT2: [1, 1, 151]; exp_num(1), is_atom(FALSE) 
167                                           #HAGR2: [1, 1, 151]; grp_num(3), sfun_num(1), distinct_flag[0]; slave_empty(0) keys(EBV4.ACCOUNT_ID, EBV4.PROJECT_ID, EBV4.BELONG_ORG) 
168                                             #SLCT2: [1, 1, 151]; exp11 <= '2024-04-07'
169                                               #CSCN2: [1, 1, 151]; INDEX33557737(XXT_SL_ASSET_DETAILS_BALANCE_TMP as EBV4); btr_scan(1)
170                                     #HASH RIGHT JOIN2: [4, 83, 750]; key_num(1), ret_null(0), KEY(SEBV1.BELONG_ORG=exp11)
171                                       #PRJT2: [2, 1, 198]; exp_num(4), is_atom(FALSE) 
172                                         #HASH LEFT SEMI JOIN2: [2, 1, 198]; KEY_NUM(1);  KEY(EBV1.EVENT_ID=DMTEMPVIEW_889785371.colname) KEY_NULL_EQU(0)
173                                           #SLCT2: [1, 1, 198]; EBV1.ACCOUNT_ID = var19
174                                             #CSCN2: [1, 1, 198]; INDEX33557737(XXT_SL_ASSET_DETAILS_BALANCE_TMP as EBV1); btr_scan(1)
175                                           #PRJT2: [1, 1, 151]; exp_num(1), is_atom(FALSE) 
176                                             #HAGR2: [1, 1, 151]; grp_num(3), sfun_num(1), distinct_flag[0]; slave_empty(0) keys(EBV2.ACCOUNT_ID, EBV2.PROJECT_ID, EBV2.BELONG_ORG) 
177                                               #SLCT2: [1, 1, 151]; exp11 < '2024-04-07'
178                                                 #CSCN2: [1, 1, 151]; INDEX33557737(XXT_SL_ASSET_DETAILS_BALANCE_TMP as EBV2); btr_scan(1)
179                                       #SLCT2: [1, 83, 552]; AIB.PROJECT_ID = PBPSI.PROJECT_ID
180                                         #NEST LOOP INNER JOIN2: [1, 83, 552]; [with var]
181                                           #BLKUP2: [1, 1, 252]; INDEX33557263(AIB)
182                                             #SSEK2: [1, 1, 252]; scan_type(ASC), INDEX33557263(AMC_ASSET_ACCOUNT_INFO_B as AIB), scan_range[var19,var19]
183                                           #PRJT2: [1, 83, 300]; exp_num(6), is_atom(FALSE) 
184                                             #NEST LOOP INNER JOIN2: [1, 83, 300]; 
185                                               #BLKUP2: [1, 1, 174]; INDEX33557197(PB)
186                                                 #SSEK2: [1, 1, 174]; scan_type(ASC), INDEX33557197(AMC_BASE_PROJECT_B as PB), scan_range[var20,var20]
187                                               #SLCT2: [1, 83, 126]; exp11 <> '1'
188                                                 #CSCN2: [1, 88, 126]; INDEX33557680(AMC_PROJECT_SPLIT_INFO_B as PSI); btr_scan(1)
189                       #CSCN2: [1, 777, 96]; INDEX33558127(PCMC_DEPT as PD); btr_scan(1)
190                 #HEAP TABLE: [10, 50, 1118]; table_no(1) full(0), mpp_full(0) autoid(0), sites(-)
191                   #PRJT2: [10, 50, 1118]; exp_num(5), is_atom(FALSE) 
192                     #SLCT2: [10, 50, 1118]; (TMPREMOTETAB889785365.ENTITY_CATEGORY = 'BAD_ASSETS' AND TMPREMOTETAB889785365.RELATION_TARGET = 'EVENT' AND var1 >= '2024-04-07' AND var1 <= '2024-04-07')
193                       #REMOTE SCAN: [10, 1000, 1118]; TMPREMOTETAB889785365@TOEBS
194               #HEAP TABLE: [10, 50, 1118]; table_no(2) full(0), mpp_full(0) autoid(0), sites(-)
195                 #PRJT2: [10, 50, 1118]; exp_num(5), is_atom(FALSE) 
196                   #SLCT2: [10, 50, 1118]; (TMPREMOTETAB889785367.ENTITY_CATEGORY = 'BAD_ASSETS' AND TMPREMOTETAB889785367.RELATION_TARGET = 'EVENT' AND var1 >= '2024-04-07' AND var1 <= '2024-04-07')
197                     #REMOTE SCAN: [10, 1000, 1118]; TMPREMOTETAB889785367@TOEBS
198             #HEAP TABLE: [10, 25, 96]; table_no(3) full(0), mpp_full(0) autoid(0), sites(-)
199               #PRJT2: [10, 25, 96]; exp_num(1), is_atom(FALSE) 
200                 #SLCT2: [10, 25, 96]; TMPREMOTETAB889785368.ATTRIBUTE3 = 'REC_DIVIDEND'
201                   #REMOTE SCAN: [10, 1000, 96]; TMPREMOTETAB889785368@TOEBS
202           #HEAP TABLE: [10, 50, 1118]; table_no(4) full(0), mpp_full(0) autoid(0), sites(-)
203             #PRJT2: [10, 50, 1118]; exp_num(5), is_atom(FALSE) 
204               #SLCT2: [10, 50, 1118]; (TMPREMOTETAB889785369.ENTITY_CATEGORY = 'BAD_ASSETS' AND TMPREMOTETAB889785369.RELATION_TARGET = 'EVENT' AND exp11 <= '2024-04-07')
205                 #REMOTE SCAN: [10, 1000, 1118]; TMPREMOTETAB889785369@TOEBS
206         #HEAP TABLE: [10, 25, 96]; table_no(5) full(0), mpp_full(0) autoid(0), sites(-)
207           #PRJT2: [10, 25, 96]; exp_num(1), is_atom(FALSE) 
208             #SLCT2: [10, 25, 96]; TMPREMOTETAB889785370.ATTRIBUTE3 = 'REC_DIVIDEND'
209               #REMOTE SCAN: [10, 1000, 96]; TMPREMOTETAB889785370@TOEBS
210       #SPL2: [1, 1, 144]; key_num(1), spool_num(1), is_atom(TRUE), has_var(1), sites(-)
211         #PRJT2: [1, 1, 144]; exp_num(1), is_atom(TRUE) 
212           #SSEK2: [1, 1, 144]; scan_type(ASC), IDX_TP_CD_NA(PCMC_KNP_PARA as PC), scan_range[('GWAMCC_YES_NO',var18,min),('GWAMCC_YES_NO',var18,max))
213     #SPL2: [1, 1, 144]; key_num(1), spool_num(0), is_atom(TRUE), has_var(1), sites(-)
214       #PRJT2: [1, 1, 144]; exp_num(1), is_atom(TRUE) 
215         #SSEK2: [1, 1, 144]; scan_type(ASC), IDX_TP_CD_NA(PCMC_KNP_PARA as PC), scan_range[('GWAMCC_DETAIL_OPTION',var17,min),('GWAMCC_DETAIL_OPTION',var17,max))

解决思路

  1. 尝试执行每个子查询,分析结果集大小,其中子查询单独执行耗时较多的不宜用hash join。

  2. 对整个查询where条件尝试加减法,发现只要其中一个连接条件都会让 查询效率和原来相比下降很多。

  3. 分析这些连接条件,它们都有一个共同地方,使用了临时表pbpsi。

  4. 分析pbpsi这部分表相关的执行计划,猜测瓶颈在这里,尝试使用 NO_USE_CVT_VAR。

  5. /*+ NO_USE_CVT_VAR*/后,执行计划发生改变,查询用时从1min变为12s。

  6. 瓶颈究竟出现在哪?显然不在内层循环,循环后还只是一个hash right join。查找其他 use var的地方。

  7. 此时外层表连接没有nest loop。推测是最外层连接时use var的原因。

优化后执行计划

1   #INSERT : [0, 0, 0]; table(REGISTER_BOOK_TMP), type(select), hp_opt(0), mpp_opt(0)
2     #PIPE2: [17103, 26, 9760] 
3       #PIPE2: [17103, 26, 9760] 
4         #PRJT2: [17103, 26, 9760]; exp_num(30), is_atom(FALSE) 
5           #HASH2 INNER JOIN: [17103, 26, 9760]; RKEY_UNIQUE KEY_NUM(1); KEY(exp11=PD.DEPTCODE) KEY_NULL_EQU(0)
6             #HASH2 INNER JOIN: [17102, 26, 9664];  KEY_NUM(1); KEY(AIB.PRODUCT_NUM=PTV.PROD_TYPE_CODE) KEY_NULL_EQU(0)
7               #SLCT2: [17101, 33, 8848]; (AIB.DETAIL_OPTION IN LIST OR AIB.PRODUCT_NUM IN LIST)
8                 #HASH2 INNER JOIN: [17101, 33, 8848];  KEY_NUM(1); KEY(ALB.ACCOUNT_ID=AIB.ACCOUNT_ID) KEY_NULL_EQU(0)
9                   #NEST LOOP INDEX JOIN2: [19, 8, 3514] 
10                    #HASH2 INNER JOIN: [19, 8, 3418];  KEY_NUM(1); KEY(ALB.ASSET_ORGINAL_ID=EPB.ASSET_ORGINAL_ID) KEY_NULL_EQU(0)
11                      #PRJT2: [18, 8, 3166]; exp_num(2), is_atom(FALSE) 
12                        #NEST LOOP INDEX JOIN2: [18, 8, 3166] 
13                          #DISTINCT: [18, 1, 403]
14                            #PRJT2: [16, 1, 403]; exp_num(1), is_atom(FALSE) 
15                              #HAGR2: [16, 1, 403]; grp_num(1), sfun_num(1), distinct_flag[0]; slave_empty(0) keys(BALB.ACCOUNT_ID) 
16                                #INDEX JOIN SEMI JOIN2: [15, 1203, 403];  join condition((exp11 <= '2024-04-07' AND B1.MANUAL_BILL IN LIST AND ((B1.ENTRY_STATUS = 'SL' AND B1.MANUAL_BILL = 'Y' AND B1.BUSINESS_STAGE = 'INVEST_STAGE') OR (B1.BUSINESS_TYPE = 'NORMAL_DISPOSAL' AND BEPB.DISPOSE_FLAG = 'Y' AND B1.ENTRY_STATUS = 'SL' AND B1.MANUAL_BILL = 'Y') OR (B1.MANUAL_BILL = 'N' AND B1.BUSINESS_STAGE = 'INVEST_STAGE' AND B1.ENTRY_STATUS IN LIST) OR (B1.BUSINESS_TYPE = 'NORMAL_DISPOSAL' AND BEPB.DISPOSE_FLAG = 'Y' AND B1.MANUAL_BILL = 'N' AND B1.ENTRY_STATUS IN LIST))))
17                                  #NEST LOOP INDEX JOIN2: [8, 1203, 168] 
18                                    #CSCN2: [1, 1203, 78]; INDEX33557178(AMC_BILL_EQUITY_PAGE_B as BEPB); btr_scan(1)
19                                    #BLKUP2: [7, 1, 30]; AMC_BILL_ASSET_LINE_N2(BALB)
20                                      #SSEK2: [7, 1, 30]; scan_type(ASC), AMC_BILL_ASSET_LINE_N2(AMC_BILL_ASSET_LINE_B as BALB), scan_range[BEPB.ASSET_ORGINAL_ID,BEPB.ASSET_ORGINAL_ID]
21                                  #BLKUP2: [7, 1, 30]; INDEX33557203(B1)
22                                    #SSEK2: [7, 1, 30]; scan_type(ASC), INDEX33557203(AMC_BILL_ASSET_HEAD_B as B1), scan_range[BALB.BILL_ID,BALB.BILL_ID]
23                          #BLKUP2: [1, 8, 30]; AMC_BILL_ASSET_LINE_B_DSH0320_01(B)
24                            #SSEK2: [1, 8, 30]; scan_type(ASC), AMC_BILL_ASSET_LINE_B_DSH0320_01(AMC_BILL_ASSET_LINE_B as B), scan_range[DMTEMPVIEW_889360133.colname,DMTEMPVIEW_889360133.colname]
25                      #CSCN2: [1, 1203, 252]; INDEX33557178(AMC_BILL_EQUITY_PAGE_B as EPB); btr_scan(1)
26                    #BLKUP2: [1, 1, 48]; INDEX33558472(CB)
27                      #SSEK2: [1, 1, 48]; scan_type(ASC), INDEX33558472(AMC_BASE_CUSTOMER_B as CB), scan_range[EPB.CUSTOMER_NUMBER,EPB.CUSTOMER_NUMBER]
28                  #HASH RIGHT JOIN2: [12448, 6380937, 5334]; key_num(2), ret_null(0), KEY(AAS4.ACCOUNT_ID=AIB.ACCOUNT_ID AND AAS4.SEGMENT1=exp11)
29                    #PRJT2: [3300, 1, 1478]; exp_num(3), is_atom(FALSE) 
30                      #HAGR2: [3300, 1, 1478]; grp_num(2), sfun_num(2), distinct_flag[0,0]; slave_empty(0) keys(BALB3.ACCOUNT_ID, AAS3.SEGMENT1) 
31                        #HASH RIGHT SEMI JOIN2: [3296, 75, 1478]; n_keys(1) KEY(DMTEMPVIEW_889360143.colname=BAHB3.MANUAL_BILL) KEY_NULL_EQU(0)
32                          #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1)
33                          #SLCT2: [3296, 75, 1478]; (BAHB3.BUSINESS_STAGE = 'HANDLE_STAGE' AND ((BAHB3.ENTRY_STATUS = 'SL' AND BAHB3.MANUAL_BILL = 'Y') OR (BAHB3.MANUAL_BILL = 'N' AND BAHB3.ENTRY_STATUS IN LIST)))
34                            #NEST LOOP INDEX JOIN2: [3296, 75, 1478] 
35                              #NEST LOOP INDEX JOIN2: [3291, 75, 1304] 
36                                #SLCT2: [3286, 75, 1214]; AAS3.SEGMENT3 = XCB3.FLEX_VALUE
37                                  #NEST LOOP INNER JOIN2: [3286, 75, 1214]; 
38                                    #PRJT2: [10, 1000, 96]; exp_num(1), is_atom(FALSE) 
39                                      #REMOTE SCAN: [10, 1000, 96]; TMPREMOTETAB889360124@TOEBS, condition(TMPREMOTETAB889360124.ATTRIBUTE3 = 'REC_DIVIDEND')
40                                    #PRJT2: [10, 1000, 1118]; exp_num(5), is_atom(FALSE) 
41                                      #REMOTE SCAN: [10, 1000, 1118]; TMPREMOTETAB889360123@TOEBS, condition((TMPREMOTETAB889360123.ENTITY_CATEGORY = 'BAD_ASSETS' AND TMPREMOTETAB889360123.RELATION_TARGET = 'EVENT' AND exp11 <= '2024-04-07'))
42                                #BLKUP2: [4, 1, 30]; INDEX33559142(BALB3)
43                                  #SSEK2: [4, 1, 30]; scan_type(ASC), INDEX33559142(AMC_BILL_ASSET_LINE_B as BALB3), scan_range[AAS3.ENTITY_ID,AAS3.ENTITY_ID]
44                              #BLKUP2: [4, 1, 30]; INDEX33557203(BAHB3)
45                                #SSEK2: [4, 1, 30]; scan_type(ASC), INDEX33557203(AMC_BILL_ASSET_HEAD_B as BAHB3), scan_range[BALB3.BILL_ID,BALB3.BILL_ID]
46                    #HASH RIGHT JOIN2: [5685, 6380937, 3856]; key_num(2), ret_null(0), KEY(AAS6.ACCOUNT_ID=AIB.ACCOUNT_ID AND AAS6.SEGMENT1=exp11)
47                      #PRJT2: [28, 1, 1478]; exp_num(3), is_atom(FALSE) 
48                        #HAGR2: [28, 1, 1478]; grp_num(2), sfun_num(1), distinct_flag[0]; slave_empty(0) keys(DMTEMPVIEW_889360130.TMPCOL0, DMTEMPVIEW_889360130.TMPCOL1) 
49                          #PRJT2: [27, 75, 1478]; exp_num(3), is_atom(FALSE) 
50                            #HASH2 INNER JOIN: [27, 75, 1478];  KEY_NUM(1); KEY(XCB5.FLEX_VALUE=AAS5.SEGMENT3) KEY_NULL_EQU(0)
51                              #PRJT2: [10, 1000, 96]; exp_num(1), is_atom(FALSE) 
52                                #REMOTE SCAN: [10, 1000, 96]; TMPREMOTETAB889360122@TOEBS, condition(TMPREMOTETAB889360122.ATTRIBUTE3 = 'REC_DIVIDEND')
53                              #HASH RIGHT SEMI JOIN2: [16, 50, 1382]; n_keys(1) KEY(DMTEMPVIEW_889360144.colname=BAHB5.MANUAL_BILL) KEY_NULL_EQU(0)
54                                #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1)
55                                #SLCT2: [16, 50, 1382]; (BAHB5.BUSINESS_STAGE = 'HANDLE_STAGE' AND ((BAHB5.ENTRY_STATUS = 'SL' AND BAHB5.MANUAL_BILL = 'Y') OR (BAHB5.MANUAL_BILL = 'N' AND BAHB5.ENTRY_STATUS IN LIST)))
56                                  #NEST LOOP INDEX JOIN2: [16, 50, 1382] 
57                                    #NEST LOOP INDEX JOIN2: [13, 50, 1208] 
58                                      #PRJT2: [10, 1000, 1118]; exp_num(5), is_atom(FALSE) 
59                                        #REMOTE SCAN: [10, 1000, 1118]; TMPREMOTETAB889360121@TOEBS, condition((TMPREMOTETAB889360121.ENTITY_CATEGORY = 'BAD_ASSETS' AND TMPREMOTETAB889360121.RELATION_TARGET = 'EVENT' AND exp11 >= '2024-04-07' AND exp11 <= '2024-04-07'))
60                                      #BLKUP2: [3, 1, 30]; INDEX33559142(BALB5)
61                                        #SSEK2: [3, 1, 30]; scan_type(ASC), INDEX33559142(AMC_BILL_ASSET_LINE_B as BALB5), scan_range[AAS5.ENTITY_ID,AAS5.ENTITY_ID]
62                                    #BLKUP2: [3, 1, 30]; INDEX33557203(BAHB5)
63                                      #SSEK2: [3, 1, 30]; scan_type(ASC), INDEX33557203(AMC_BILL_ASSET_HEAD_B as BAHB5), scan_range[BALB5.BILL_ID,BALB5.BILL_ID]
64                      #HASH RIGHT JOIN2: [3366, 6380937, 2378]; key_num(2), ret_null(0), KEY(AAS2.ACCOUNT_ID=AIB.ACCOUNT_ID AND AAS2.SEGMENT1=exp11)
65                        #PRJT2: [24, 1, 1430]; exp_num(8), is_atom(FALSE) 
66                          #HAGR2: [24, 1, 1430]; grp_num(2), sfun_num(6), distinct_flag[0,0,0,0,0,0]; slave_empty(0) keys(DMTEMPVIEW_889360128.TMPCOL0, DMTEMPVIEW_889360128.TMPCOL1) 
67                            #PRJT2: [22, 150, 1430]; exp_num(8), is_atom(FALSE) 
68                              #HASH RIGHT SEMI JOIN2: [22, 150, 1430]; n_keys(1) KEY(DMTEMPVIEW_889360145.colname=BAHB1.MANUAL_BILL) KEY_NULL_EQU(0)
69                                #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1)
70                                #SLCT2: [22, 150, 1430]; ((BAHB1.ENTRY_STATUS = 'SL' AND BAHB1.MANUAL_BILL = 'Y') OR (BAHB1.MANUAL_BILL = 'N' AND BAHB1.ENTRY_STATUS IN LIST))
71                                  #NEST LOOP INDEX JOIN2: [22, 150, 1430] 
72                                    #NEST LOOP INDEX JOIN2: [21, 150, 1304] 
73                                      #HASH2 INNER JOIN: [20, 150, 1214];  KEY_NUM(1); KEY(AAS1.SEGMENT3=XCB1.FLEX_VALUE) KEY_NULL_EQU(0)
74                                        #PRJT2: [10, 1000, 1118]; exp_num(5), is_atom(FALSE) 
75                                          #REMOTE SCAN: [10, 1000, 1118]; TMPREMOTETAB889360119@TOEBS, condition((TMPREMOTETAB889360119.ENTITY_CATEGORY = 'BAD_ASSETS' AND TMPREMOTETAB889360119.RELATION_TARGET = 'EVENT' AND exp11 >= '2024-04-07' AND exp11 <= '2024-04-07'))
76                                        #PRJT2: [10, 1000, 96]; exp_num(2), is_atom(FALSE) 
77                                          #REMOTE SCAN: [10, 1000, 96]; TMPREMOTETAB889360120@TOEBS
78                                      #BLKUP2: [1, 1, 30]; INDEX33559142(BALB1)
79                                        #SSEK2: [1, 1, 30]; scan_type(ASC), INDEX33559142(AMC_BILL_ASSET_LINE_B as BALB1), scan_range[AAS1.ENTITY_ID,AAS1.ENTITY_ID]
80                                    #BLKUP2: [1, 1, 30]; INDEX33557203(BAHB1)
81                                      #SSEK2: [1, 1, 30]; scan_type(ASC), INDEX33557203(AMC_BILL_ASSET_HEAD_B as BAHB1), scan_range[BALB1.BILL_ID,BALB1.BILL_ID]
82                        #HASH RIGHT JOIN2: [2184, 6380937, 948]; key_num(2), ret_null(0), KEY(SEBV2.ACCOUNT_ID=AIB.ACCOUNT_ID AND SEBV2.BELONG_ORG=exp11)
83                          #PRJT2: [1, 1, 198]; exp_num(5), is_atom(FALSE) 
84                            #HASH LEFT SEMI JOIN2: [1, 1, 198]; KEY_NUM(1);  KEY(EBV3.EVENT_ID=DMTEMPVIEW_889360126.colname) KEY_NULL_EQU(0)
85                              #CSCN2: [1, 1, 198]; INDEX33557737(XXT_SL_ASSET_DETAILS_BALANCE_TMP as EBV3); btr_scan(1)
86                              #PRJT2: [1, 1, 151]; exp_num(1), is_atom(FALSE) 
87                                #HAGR2: [1, 1, 151]; grp_num(3), sfun_num(1), distinct_flag[0]; slave_empty(0) keys(EBV4.ACCOUNT_ID, EBV4.PROJECT_ID, EBV4.BELONG_ORG) 
88                                  #SLCT2: [1, 1, 151]; exp11 <= '2024-04-07'
89                                    #CSCN2: [1, 1, 151]; INDEX33557737(XXT_SL_ASSET_DETAILS_BALANCE_TMP as EBV4); btr_scan(1)
90                          #HASH RIGHT JOIN2: [1181, 6380937, 750]; key_num(2), ret_null(0), KEY(SEBV1.ACCOUNT_ID=AIB.ACCOUNT_ID AND SEBV1.BELONG_ORG=exp11)
91                            #PRJT2: [1, 1, 198]; exp_num(5), is_atom(FALSE) 
92                              #HASH LEFT SEMI JOIN2: [1, 1, 198]; KEY_NUM(1);  KEY(EBV1.EVENT_ID=DMTEMPVIEW_889360125.colname) KEY_NULL_EQU(0)
93                                #CSCN2: [1, 1, 198]; INDEX33557737(XXT_SL_ASSET_DETAILS_BALANCE_TMP as EBV1); btr_scan(1)
94                                #PRJT2: [1, 1, 151]; exp_num(1), is_atom(FALSE) 
95                                  #HAGR2: [1, 1, 151]; grp_num(3), sfun_num(1), distinct_flag[0]; slave_empty(0) keys(EBV2.ACCOUNT_ID, EBV2.PROJECT_ID, EBV2.BELONG_ORG) 
96                                    #SLCT2: [1, 1, 151]; exp11 < '2024-04-07'
97                                      #CSCN2: [1, 1, 151]; INDEX33557737(XXT_SL_ASSET_DETAILS_BALANCE_TMP as EBV2); btr_scan(1)
98                            #HASH2 INNER JOIN: [335, 6380937, 552];  KEY_NUM(1); KEY(AIB.PROJECT_ID=PBPSI.PROJECT_ID) KEY_NULL_EQU(0)
99                              #CSCN2: [11, 76327, 252]; INDEX33557215(AMC_ASSET_ACCOUNT_INFO_B as AIB); btr_scan(1)
100                             #PRJT2: [228, 787595, 300]; exp_num(6), is_atom(FALSE) 
101                               #NEST LOOP INNER JOIN2: [228, 787595, 300]; 
102                                 #SLCT2: [1, 83, 126]; exp11 <> '1'
103                                   #CSCN2: [1, 88, 126]; INDEX33557680(AMC_PROJECT_SPLIT_INFO_B as PSI); btr_scan(1)
104                                 #CSCN2: [1, 9421, 174]; INDEX33557154(AMC_BASE_PROJECT_B as PB); btr_scan(1)
105             #PRJT2: [1, 222, 816]; exp_num(2), is_atom(FALSE) 
106               #CSCN2: [1, 222, 816]; INDEX33558407(XXT_COA_PROD_TYPE_B); btr_scan(1)
107           #CSCN2: [1, 777, 96]; INDEX33558127(PCMC_DEPT as PD); btr_scan(1)
108       #SPL2: [1, 1, 144]; key_num(1), spool_num(1), is_atom(TRUE), has_var(1), sites(-)
109         #PRJT2: [1, 1, 144]; exp_num(1), is_atom(TRUE) 
110           #SSEK2: [1, 1, 144]; scan_type(ASC), IDX_TP_CD_NA(PCMC_KNP_PARA as PC), scan_range[('GWAMCC_YES_NO',var12,min),('GWAMCC_YES_NO',var12,max))
111     #SPL2: [1, 1, 144]; key_num(1), spool_num(0), is_atom(TRUE), has_var(1), sites(-)
112       #PRJT2: [1, 1, 144]; exp_num(1), is_atom(TRUE) 
113         #SSEK2: [1, 1, 144]; scan_type(ASC), IDX_TP_CD_NA(PCMC_KNP_PARA as PC), scan_range[('GWAMCC_DETAIL_OPTION',var11,min),('GWAMCC_DETAIL_OPTION',var11,max))

调整内容

  1. 子查询加 /*+ enable_hash_join(0)*/
  2. 主查询加 /*+ NO_USE_CVT_VAR optimizer_or_nbexp(3)*/

标签:一例,bill,project,num,KEY,sql,nvl,优化,id
From: https://www.cnblogs.com/lixiaomeng/p/18172394

相关文章

  • 博客性能优化笔记 | 99分
    闲着没事,拿lighthouse测了一下博客网站的性能评测,发现诊断出的问题还挺多,就顺手优化了一下。这篇文章将记录这个优化的过程。优化前后对比lighthouse检测结果优化前优化后性能面板检测结果FCPDOMContentLoadedLCP优化前764ms1798ms1864ms......
  • 如何选择配置 MySQL innodb_log_file_size
    配置InnoDB的redo空间大小是写密集型工作负载最重要的配置选项之一。不过,这需要权衡利弊。配置的redo空间越大,InnoDB就能更好地优化写IO。不过,增加redo空间也意味着在系统断电或因其他原因崩溃时需要更长的恢复时间。 对于特定的innodb_log_file_size值,要预测系统......
  • 构建包含mysql和redis服务的docker镜像
    直接上dockerfile代码1FROMcentos:centos7.9.20092RUNyuminstall-ywget&&\3wgethttps://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm&&\4yum-ylocalinstallmysql80-community-release-el7-11.noarch.rpm......
  • redis实战优化二
    参考:图灵课堂缓存穿透之布隆过滤器对于恶意攻击,向服务器请求大量不存在的数据造成的缓存穿透,还可以用布隆过滤器先做一次过滤,对于不存在的数据布隆过滤器一般都能够过滤掉,不让请求再往后端发送。当布隆过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在。......
  • MySQL 数据库自增主键生成的优缺点
    MySQL数据库中使用自增主键(AUTO_INCREMENT)作为表的主键有以下显著的优点和缺点:**优点**:1.**简化开发**:开发人员不需要手动指定每条记录的唯一标识,减少了出错的可能性。2.**性能优化**:自增主键通常会导致数据在物理存储上近乎顺序地排列,这能够提升基于主键的查询效率,特别......
  • mysql 锁,和加锁机制
    背景间隙锁是MySQL在RR可重复读隔离级别下用来修复幻读才引入的一种锁,间隙锁也只有在RR可重复读隔离级别下才会存在,如果是在RC读已提交隔离级别下,是没有间隙锁的存在的。另外,我们也知道,幻读这种现象也只有在当前读的时候才会发生,在一致性快照读的情况下是没有幻读现象的。那么间......
  • 注册表碎片整理是一种优化操作系统注册表的方法,旨在减少注册表文件的碎片化,从而提高系
    注册表碎片整理是一种优化操作系统注册表的方法,旨在减少注册表文件的碎片化,从而提高系统性能和响应速度。它通过重新整理和优化注册表文件的存储结构,以及压缩空闲空间等方式,来改善系统的整体表现。注册表是Windows操作系统中的核心组件之一,它存储了系统和安装的应用程序的配......
  • C# 搭建一个 基于ISqlSugarClient 三层架构框架 涉及数据库仓储 然后中间又有业务逻辑
    要在C#中搭建基于ISqlSugarClient的三层架构框架,你需要定义数据访问层(DAL)、业务逻辑层(BLL)和表现层(UI)。下面是一个完整的例子,涉及数据库仓储、业务逻辑层,以及依赖注入。这个例子基于ASP.NETCoreMVC构建,使用ISqlSugarClient来处理数据访问。这个例子中,我们将使用User作为一个简单......
  • SQL注入-基于Pikachu的学习
    zhSQL注入SQL数据库的基本语句SQL教程|菜鸟教程(runoob.com)史上最全SQL基础知识总结(理论+举例)-CSDN博客SQL注入原理SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分......
  • MySQL 8.4 初探
    MySQL8.4现已正式发布,这是一个具有重大意义的版本,因为它被指定为长期支持(LTS)版本。LTS软件的引入意味着MySQL8.0.34+将成为一个仅修复错误的版本。创新版本可能每季度发布一次,新的长期支持版本大约每两年发布一次。8.4版本将持续到2026年初。但请记住,将它们纳入主流长期......