oracle insert select和select执行计划不同解决
之前有提到,一个查询独立执行的时候走的是A执行计划,作为另外一个查询的一部分时走的是B执行计划。不仅如此,还会出现insert select和select执行计划不同的情况,前者属于正常情况,可是后者就不是很好理解了,如下所示:
INSERT INTO ta_tagencycfm04file (c_tenantid, c_tacode, c_tradeacco, c_cityno, c_fundcode, d_requestdate, d_requesttime, c_businflag, c_requestno, c_moneytype, f_shares, f_balance, f_confirmshares, f_confirmbalance, c_fundacco, c_custtype, d_hopedate, c_agencyno, d_cdate, f_stamptax, f_bsharefare, f_changefillfare, f_agentfare, f_fundfare, f_interesttax, f_factinterest, f_sumfare, c_oricserialno, f_agio, c_netno, c_otheragency, c_othernetno, c_othertradeacco, c_otheracco, c_cserialno, c_bonustype, c_freezecause, d_freezeenddate, c_orirequestno , c_chargetype, f_netvalue, c_datadetailflag, c_targetchargetype, c_changeflag, f_interestshare, f_backbalance, f_changefare, f_profitbalance, f_chincome_abs, c_incomeflag, f_breachfare, f_breachfare4fund, f_raiseinerest, c_requestendflag, c_exceedflag, d_registdate, c_childnetno, c_taflag, c_cserialnototal, f_othernetvalue, f_othercfmshares, c_protocolno, c_txtfundcode, c_txtcause, c_txtbusinflag, c_txtothercode, c_txterrordetail, c_custno, c_adjustflag, f_profitcompensation, d_originaldate, c_combcode, c_specification, c_forceredemptiontype, f_otherfee2) SELECT a.c_tenantid, a.c_tacode, c_tradeacco, CASE CONCAT(CONCAT(CONCAT('F6' ,a.c_agencyno),c_taflag),a.c_businflag) WHEN '66003153' THEN ' ' ELSE c_cityno END c_cityno, a.c_fundcode, a.d_requestdate, d_requesttime, a.c_businflag, c_requestno, c_moneytype, f_shares, f_balance, f_confirmshares, f_confirmbalance, CASE a.c_fundacco WHEN ' ' THEN ' ' ELSE (CASE (SELECT t.c_paramvalue FROM ta_textparameter t WHERE c_paramitem='C_FUNDACCO3CHG') WHEN '1' THEN CONCAT('T',SUBSTR(a.c_fundacco,4,9)) ELSE a.c_fundacco END) END c_fundacco, c_custtype, d_hopedate, a.c_agencyno, d_cdate, f_stamptax, f_bsharefare, f_changefillfare, f_agentfare, f_fundfare, f_interesttax, f_factinterest, f_sumfare, c_oricserialno, f_agio, c_netno, c_otheragency, c_othernetno, CASE CONCAT(CONCAT(a.c_agencyno,a.c_businflag),a.c_adjustcause) WHEN '002704' THEN ' ' ELSE a.c_othertradeacco END c_othertradeacco, CASE a.c_otheracco WHEN ' ' THEN ' ' ELSE (CASE (SELECT t.c_paramvalue FROM ta_textparameter t WHERE c_paramitem='C_FUNDACCO3CHG') WHEN '1' THEN CONCAT('T',SUBSTR(a.c_otheracco,4,9)) ELSE a.c_otheracco END) END c_otheracco, c_cserialno, c_bonustype, c_freezecause, d_freezeenddate, c_orirequestno, c_chargetype, f_netvalue, c_datadetailflag, c_targetchargetype, c_changeflag, f_interestshare, f_backbalance, f_changefare, f_profitbalance, f_chincome_abs, c_incomeflag, f_breachfare, f_breachfare4fund, f_raiseinerest, c_requestendflag, c_exceedflag, d_registdate, c_childnetno, c_taflag, c_cserialnototal, f_othernetvalue, f_othercfmshares, c_protocolno, CASE a.c_sharetypes WHEN 'AB' THEN a.c_fundcode ELSE COALESCE(b.c_outfundcode,a.c_fundcode) END c_txtfundcode, COALESCE(c.c_outcause,a.c_cause) c_txtcause, COALESCE(d.c_confirmflag,CONCAT('1', SUBSTR(a.c_outbusinflag,2,2))) c_txtbusinflag, CASE a.c_sharetypes WHEN 'AB' THEN a.c_othercode ELSE COALESCE(e.c_outfundcode,a.c_othercode) END c_txtothercode, CASE CONCAT(TRIM(COALESCE(c.c_describe,a.c_errordetail)), ' ') WHEN ' ' THEN '0000' ELSE COALESCE(c.c_describe, a.c_errordetail) END c_txterrordetail, ' ' c_custno, a.c_adjustflag, a.f_profitcompensation, a.d_originaldate, a.c_combcode, a.c_specification, a.c_forceredemptiontype, a.f_otherfee2 FROM (SELECT /*+full(a) full(d) use_hash(d) */ CASE a.c_fundacco WHEN COALESCE(icbc.c_fundacco,'***' ) THEN COALESCE(icbc.c_tradeacco,a.c_tradeacco) ELSE a.c_tradeacco END c_tradeacco, CASE a.c_agencyno WHEN '002' THEN LPAD(TRIM(a.c_netno),4,'0') ELSE a.c_cityno END c_cityno, a.c_fundcode c_fundcode, CASE CONCAT(CONCAT(a.c_iversion,a.c_businflag),a.c_taflag) WHEN '400031' THEN getrealdays(a.c_tenantid, a.c_fundcode, a.c_agencyno, 20100513, -1*getsysvalue(a.c_tenantid, a.c_tacode, '*', '*', a.c_fundcode, 'FundTnConfirm', '1')) ELSE a.d_requestdate END d_requestdate, a.d_requesttime, a.c_tacode, a.c_tenantid, CASE CONCAT(a.c_businflag,a.c_taflag) WHEN '031' THEN '53' ELSE (CASE CONCAT(CONCAT(a.c_iversion,a.c_cause),a.c_businflag) WHEN '400200154' THEN '50' ELSE a.c_businflag END) END c_businflag, CASE CONCAT(a.c_agencyno,a.c_taflag) WHEN '0061' THEN (CASE a.c_outbusinflag WHEN '081' THEN a.c_freezeno ELSE ' ' END) WHEN '0021' THEN (CASE a.c_businflag WHEN '50' THEN (CASE a.c_requestno WHEN ' ' THEN a.c_cserialno ELSE a.c_requestno END) WHEN '54' THEN (CASE a.c_requestno WHEN ' ' THEN a.c_cserialno ELSE a.c_requestno END) ELSE ' ' END) ELSE (CASE a.c_requestno WHEN ' ' THEN a.c_cserialno ELSE a.c_requestno END) END c_requestno, COALESCE(fi.c_moneytype,'156') c_moneytype, CASE WHEN CONCAT(a.c_businflag,a.c_status) IN ('041','051','061') THEN a.f_confirmshares WHEN CONCAT(CONCAT(CONCAT('0',a.c_businflag),a.c_agencyno),a.c_status) = '1130021' THEN (CASE a.c_iversion WHEN '400' THEN a.f_shares ELSE a.f_confirmshares END) WHEN (CONCAT(a.c_iversion,a.c_agencyno) = '400002') AND (CONCAT(a.c_status,a.c_businflag) = '103') THEN a.f_confirmshares /*+ a.f_unshares*/ ELSE a.f_shares END f_shares, a.f_balance, CASE a.c_iversion WHEN '400' THEN d.f_confirmshares ELSE (CASE /*COALESCE(tai.c_changeonstep,'0')*/CONCAT(CONCAT(CONCAT('0',a.c_businflag),a.c_agencyno),a.c_status) WHEN '1130021' THEN /*COALESCE(chgin.f_confirmshares,0)*/ 0 ELSE d.f_confirmshares END) END f_confirmshares, CASE d.c_businflag WHEN '70' THEN 0 WHEN '71' THEN 0 WHEN '13' THEN (CASE a.c_iversion WHEN '400' THEN 1 ELSE 0 END)*(d.f_tradefare+d.f_backfare+d.f_otherfare1)+d.f_confirmbalance WHEN '16' THEN (CASE a.c_iversion WHEN '400' THEN 1 ELSE 0 END)*(d.f_tradefare+d.f_backfare+d.f_otherfare1)+d.f_confirmbalance ELSE d.f_confirmbalance END f_confirmbalance, a.c_fundacco, a.c_custtype, a.d_hopedate d_hopedate, a.c_agencyno, a.d_outputdate d_cdate, a.c_status, d.f_tradefare, d.f_stamptax, d.f_tafare, d.f_otherfare1, d.f_backfare, CASE a.c_businflag WHEN '03' THEN d.f_tradefare ELSE 0 END f_redeemfare, CASE d.c_businflag WHEN '03' THEN d.f_backfare ELSE 0 END f_bsharefare, CASE d.c_businflag WHEN '13' THEN d.f_backfare ELSE 0 END f_changefillfare, 0 f_agentfare, 0 f_fundfare, CASE a.c_businflag WHEN '54' THEN (CASE a.f_confirmbalance-a.f_frozenbalance WHEN 0 THEN 0 ELSE a.f_interesttax END) WHEN '50' THEN 0 ELSE a.f_interesttax END f_interesttax, 0 f_factinterest, (d.f_tradefare+d.f_stamptax+d.f_tafare+d.f_otherfare1+d.f_backfare+d.f_breachfare+d.f_profitbalance) f_sumfare, CASE WHEN 'F6' = '27' AND d.c_agencyno = '227' AND a.c_adjustcause<>'1' THEN (CASE a.c_businflag WHEN '15' THEN ' ' WHEN '16' THEN ' ' WHEN '05' THEN ' ' WHEN '70' THEN ' ' WHEN '21' THEN '' ELSE d.c_oricserialno END) ELSE d.c_oricserialno END c_oricserialno, a.f_agio,a.c_netno, a.c_otheragency,a.c_othernetno,a.c_othertradeacco, CASE a.c_businflag WHEN '13' THEN a.c_othercode WHEN '16' THEN a.c_othercode WHEN '70' THEN (CASE a.c_adjustcause WHEN '5' THEN a.c_othercode WHEN 'h' THEN a.c_othercode ELSE ' ' END) WHEN '71' THEN (CASE a.c_adjustcause WHEN '5' THEN a.c_othercode WHEN 'h' THEN a.c_othercode ELSE ' ' END) ELSE ' ' END c_othercode, a.c_otheracco, d.c_cserialno, CASE a.c_businflag WHEN '07' THEN a.c_bonustype ELSE ' ' END c_bonustype, a.c_freezecause, a.d_freezeenddate, a.f_frozenbalance, CASE a.c_fundacco WHEN COALESCE(icbc.c_fundacco,'***') THEN (CASE a.c_businflag WHEN '70' THEN a.c_tradeacco WHEN '71' THEN a.c_tradeacco ELSE (CASE CONCAT(a.c_agencyno,a.c_taflag) WHEN '0021' THEN ' ' ELSE a.c_orirequestno END) END) ELSE (CASE CONCAT(a.c_agencyno,a.c_taflag) WHEN '0021' THEN ' ' ELSE a.c_orirequestno END) END c_orirequestno, d.c_sharetype, CASE d.c_sharetype WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE d.c_sharetype END c_chargetype, a.f_netvalue, CASE a.c_businflag WHEN '13' THEN a.c_othershare WHEN '16' THEN a.c_sharetype WHEN '70' THEN a.c_sharetype WHEN '71' THEN a.c_sharetype ELSE ' ' END c_targetsharetype, '1' c_datadetailflag, CASE a.c_businflag WHEN '13' THEN (CASE a.c_othershare WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE a.c_othershare END) WHEN '16' THEN (CASE a.c_sharetype WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE a.c_sharetype END) WHEN '70' THEN (CASE a.c_sharetype WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE a.c_sharetype END) WHEN '71' THEN (CASE a.c_sharetype WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE a.c_sharetype END) ELSE ' ' END c_targetchargetype, CASE a.c_businflag WHEN '13' THEN '0' WHEN '16' THEN '1' WHEN '12' THEN '0' WHEN '14' THEN '0' WHEN '15' THEN '1' ELSE ' ' END c_changeflag, 0 f_interestshare, 0 f_backbalance, CASE a.c_businflag WHEN '13' THEN d.f_tradefare ELSE 0 END f_changefare, d.f_profitbalance, 0 f_chincome_abs, '0' c_incomeflag, d.f_breachfare, 0 f_breachfare4fund, 0 f_raiseinerest, a.c_requestendflag, CASE a.c_requestendflag WHEN '1' THEN '0' ELSE a.c_exceedflag END c_exceedflag, COALESCE(d.d_registdate,a.d_cdate) d_registdate, SUBSTR(a.c_cause,5,100) c_errordetail, a.c_childnetno, CASE CONCAT(CONCAT(a.c_iversion,a.c_outbusinflag),a.c_businflag) WHEN '40002605' THEN '1' ELSE a.c_taflag END c_taflag, CASE a.c_iversion WHEN '400' THEN (CASE d.c_businflag WHEN '16' THEN (CASE a.c_tacode WHEN 'F6' THEN chgout.c_cserialno ELSE d.c_cserialnototal END) /*3 c_tacode*/ WHEN '15' THEN (CASE a.c_agencyno WHEN a.c_otheragency THEN d.c_cserialnoout ELSE d.c_cserialnototal END) ELSE d.c_cserialnototal END) ELSE d.c_cserialnototal END c_cserialnototal, CASE a.c_businflag WHEN '14' THEN (CASE CONCAT(a.c_iversion,a.c_outbusinflag) WHEN '400033'THEN (CASE a.c_agencyno WHEN a.c_otheragency THEN '133' ELSE '135' END) ELSE a.c_outbusinflag END) WHEN '15' THEN (CASE CONCAT(a.c_iversion,a.c_outbusinflag) WHEN '400033'THEN (CASE a.c_agencyno WHEN a.c_otheragency THEN '133' ELSE '134' END) ELSE a.c_outbusinflag END) WHEN '12' THEN (CASE CONCAT(a.c_iversion,a.c_outbusinflag) WHEN '400033'THEN '133' ELSE a.c_outbusinflag END) WHEN '13' THEN (CASE a.c_iversion WHEN '400' THEN (CASE (CASE a.c_tacode WHEN ' ' THEN 'F6' ELSE a.c_tacode END) WHEN 'F6' THEN '136' ELSE '038' END) ELSE (CASE /*nvl(tai.c_changeonstep,'0')*/'0' WHEN '1' THEN '***' ELSE a.c_outbusinflag END) END) WHEN '16' THEN (CASE a.c_iversion WHEN '400' THEN (CASE (CASE a.c_tacode WHEN ' ' THEN 'F6' ELSE a.c_tacode END) WHEN 'F6' THEN '136' ELSE '038' END) ELSE (CASE /*nvl(tai.c_changeonstep,'0')*/'0' WHEN '1' THEN '***' ELSE a.c_outbusinflag END) END) WHEN '04' THEN (CASE a.c_iversion WHEN '400' THEN '126' ELSE (CASE a.c_agencyno WHEN '006' THEN '126' ELSE a.c_outbusinflag END) END) WHEN '05' THEN (CASE a.c_iversion WHEN '400' THEN '127' ELSE (CASE CONCAT(a.c_agencyno,a.c_outbusinflag) WHEN '006026' THEN '*' ELSE a.c_outbusinflag END) END) WHEN '06' THEN (CASE a.c_iversion WHEN '400' THEN (CASE a.c_outbusinflag WHEN '026' THEN '126' ELSE a.c_outbusinflag END) ELSE (CASE CONCAT(a.c_agencyno,a.c_outbusinflag) WHEN '006026' THEN '126' ELSE a.c_outbusinflag END) END) ELSE a.c_outbusinflag END c_outbusinflag, a.f_otherprice f_othernetvalue, CASE /*tai.c_changeonstep*/CONCAT(CONCAT('0',a.c_businflag),a.c_status) WHEN '1131' THEN (CASE a.c_agencyno WHEN '002'THEN 0 ELSE /*COALESCE(chgin.f_confirmshares,0)*/ 0 END) ELSE 0 END f_othercfmshares, CASE CONCAT(a.c_iversion,a.c_agencyno) WHEN '400002' THEN (CASE INSTR('039059060061',a.c_outbusinflag) WHEN 0 THEN '' ELSE (CASE CONCAT(TRIM(a.c_otheracco),' ') WHEN ' ' THEN a.c_protocolno ELSE TRIM(a.c_otheracco) END) END) ELSE a.c_protocolno END c_protocolno, a.c_custno, CASE WHEN (a.c_adjustcause = '5') AND (a.c_agencyno = '004') THEN '8' ELSE '' END c_adjustflag, 0 f_profitcompensation, d.d_originaldate, ' ' c_combcode, a.c_adjustcause, a.c_memo c_specification, a.c_cause, a.c_forceredemptiontype, CASE d.c_sharetype WHEN 'C' THEN d.f_otherfare1 ELSE 0 END f_otherfee2, a.c_sharetypes FROM "sett_ta_tconfirm_*_F6" a LEFT JOIN ta_tfundinfo fi ON (a.c_fundcode = fi.c_fundcode AND a.c_tacode = fi.c_tacode AND a.c_tenantid = fi.c_tenantid) LEFT JOIN ta_tnetvalueday c ON (a.c_othercode = c.c_fundcode AND a.d_cdate = c.d_cdate AND a.c_tacode = c.c_tacode AND a.c_tenantid = c.c_tenantid) LEFT JOIN (SELECT /*+ no_merge */chg.d_cdate, chg.c_cserialno, chg.c_requestno, chg.c_agencyno, chg.c_tacode, chg.c_tenantid FROM "sett_ta_tconfirm_*_F6" chg , ta_tagencyexpbatch ai, ta_tfundinfo fi WHERE chg.c_agencyno = ai.c_agencyno AND chg.c_tacode = ai.c_tacode AND chg.c_tenantid = ai.c_tenantid AND chg.c_fundcode = fi.c_fundcode AND chg.c_businflag IN ('13','14') AND chg.c_tacode = fi.c_tacode AND chg.c_tenantid = fi.c_tenantid) chgout ON (a.c_requestno = chgout.c_requestno AND a.d_cdate = chgout.d_cdate AND a.c_agencyno = chgout.c_agencyno AND a.c_tacode = chgout.c_tacode AND a.c_tenantid = chgout.c_tenantid), ta_tconfirmdetail d LEFT JOIN (SELECT /*+ no_merge */c_fundacco, c_agencyno, c_netno, c_tradeacco, c_tacode, c_tenantid FROM ta_tacconet WHERE c_fundacco = COALESCE((SELECT c_paramvalue FROM ta_textparameter WHERE c_paramclass = 'TADeal' AND c_paramitem = 'ICBCFundacco'),'***' )) icbc ON (d.c_fundacco = icbc.c_fundacco AND d.c_agencyno = icbc.c_agencyno AND d.c_netno = icbc.c_netno AND d.c_tacode = icbc.c_tacode AND d.c_tenantid = icbc.c_tenantid) WHERE a.c_tacode = 'F6' AND a.c_tenantid = '*' AND a.d_cdate = d.d_cdate AND a.c_cserialno = d.c_cserialnototal AND a.c_tenantid = d.c_tenantid AND d.f_confirmshares > 0 AND CONCAT(a.c_taflag, a.c_status) <>'12' AND CONCAT(a.c_businflag, a.c_outbusinflag) <> '15088' AND CONCAT(CONCAT(CONCAT(a.c_agencyno,a.c_taflag),a.c_businflag),a.c_cause)<>'002170GHYH' AND CONCAT(CONCAT(CONCAT(a.c_agencyno,a.c_taflag),a.c_businflag),a.c_cause)<>'002171GHYH' AND a.c_isdetail = '1' AND (a.c_agencyno <> '207' OR a.c_businflag NOT IN ('13','16')) ) a LEFT JOIN ta_tfundcodechange b ON (a.c_fundcode = b.c_fundcode AND a.c_sharetype = b.c_sharetype AND a.c_tacode = b.c_tacode AND a.c_tenantid = b.c_tenantid) LEFT JOIN ta_terrormess c ON (a.c_cause = c.c_cause AND a.c_tenantid = c.c_tenantid) LEFT JOIN ta_tbusinchangeout d ON (a.c_businflag = d.c_businflag AND a.c_outbusinflag = d.c_requestflag AND a.c_tenantid = d.c_tenantid) LEFT JOIN ta_tfundcodechange e ON (a.c_othercode = e.c_fundcode AND a.c_targetsharetype = e.c_sharetype AND a.c_tacode = b.c_tacode AND a.c_tenantid = e.c_tenantid);
执行计划如下:
Plan Hash Value : 697776383 ---------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | Time | ---------------------------------------------------------------------------------------------------------------------------------- | 0 | INSERT STATEMENT | | 1 | 756 | 28913 | 00:05:47 | | 1 | LOAD TABLE CONVENTIONAL | TA_TAGENCYCFM04FILE | | | | | | * 2 | INDEX RANGE SCAN | IDX_TEXTPARAMETER_VALUE | 2 | 36 | 1 | 00:00:01 | | * 3 | INDEX RANGE SCAN | IDX_TEXTPARAMETER_VALUE | 2 | 36 | 1 | 00:00:01 | | * 4 | HASH JOIN OUTER | | 1 | 756 | 28913 | 00:05:47 | | 5 | VIEW | | 1 | 725 | 28911 | 00:05:47 | | * 6 | HASH JOIN OUTER | | 1 | 740 | 28911 | 00:05:47 | | * 7 | HASH JOIN OUTER | | 1 | 705 | 28908 | 00:05:47 | | * 8 | HASH JOIN OUTER | | 1 | 692 | 28905 | 00:05:47 | | 9 | VIEW | | 1 | 658 | 28903 | 00:05:47 | | * 10 | HASH JOIN OUTER | | 1 | 866 | 28903 | 00:05:47 | | * 11 | HASH JOIN OUTER | | 1 | 848 | 28885 | 00:05:47 | | 12 | NESTED LOOPS OUTER | | 1 | 832 | 28867 | 00:05:47 | | * 13 | HASH JOIN | | 1 | 810 | 28845 | 00:05:47 | | * 14 | HASH JOIN OUTER | | 1 | 295 | 3 | 00:00:01 | | * 15 | TABLE ACCESS FULL | TA_TCONFIRMDETAIL | 1 | 245 | 2 | 00:00:01 | | 16 | VIEW | | 1 | 50 | 1 | 00:00:01 | | 17 | TABLE ACCESS BY GLOBAL INDEX ROWID | TA_TACCONET | 1 | 40 | 1 | 00:00:01 | | * 18 | INDEX RANGE SCAN | PK_TACCONET | 1 | | 1 | 00:00:01 | | * 19 | TABLE ACCESS BY INDEX ROWID | TA_TEXTPARAMETER | 1 | 25 | 1 | 00:00:01 | | * 20 | INDEX RANGE SCAN | IDX_TEXTPARAMETER_VALUE | 170 | | 1 | 00:00:01 | | * 21 | TABLE ACCESS FULL | sett_ta_tconfirm_*_F6 | 2201315 | 1133677225 | 28836 | 00:05:47 | | 22 | VIEW PUSHED PREDICATE | | 1 | 22 | 22 | 00:00:01 | | * 23 | FILTER | | | | | | | * 24 | HASH JOIN | | 1 | 92 | 22 | 00:00:01 | | 25 | NESTED LOOPS | | 1 | 80 | 4 | 00:00:01 | | 26 | NESTED LOOPS | | 1 | 80 | 4 | 00:00:01 | | * 27 | TABLE ACCESS FULL | TA_TAGENCYEXPBATCH | 1 | 9 | 3 | 00:00:01 | | * 28 | INDEX RANGE SCAN | idx_sett_ta_tconfirm_*_F6 | 1 | | 1 | 00:00:01 | | 29 | TABLE ACCESS BY INDEX ROWID | sett_ta_tconfirm_*_F6 | 1 | 71 | 1 | 00:00:01 | | * 30 | TABLE ACCESS FULL | TA_TFUNDINFO | 401 | 4812 | 18 | 00:00:01 | | * 31 | TABLE ACCESS FULL | TA_TFUNDINFO | 401 | 6416 | 18 | 00:00:01 | | * 32 | TABLE ACCESS FULL | TA_TNETVALUEDAY | 2411 | 43398 | 18 | 00:00:01 | | 33 | TABLE ACCESS FULL | TA_TFUNDCODECHANGE | 1 | 34 | 2 | 00:00:01 | | 34 | TABLE ACCESS FULL | TA_TBUSINCHANGEOUT | 83 | 1079 | 3 | 00:00:01 | | 35 | TABLE ACCESS FULL | TA_TERRORMESS | 311 | 10885 | 3 | 00:00:01 | | 36 | TABLE ACCESS FULL | TA_TFUNDCODECHANGE | 1 | 31 | 2 | 00:00:01 | ---------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): ------------------------------------------ * 2 - access("C_PARAMITEM"='C_FUNDACCO3CHG') * 3 - access("C_PARAMITEM"='C_FUNDACCO3CHG') * 4 - access("A"."C_TENANTID"="E"."C_TENANTID"(+) AND "A"."C_TARGETSHARETYPE"="E"."C_SHARETYPE"(+) AND "A"."C_OTHERCODE"="E"."C_FUNDCODE"(+)) * 4 - filter("B"."C_TACODE"=CASE WHEN ("E"."C_FUNDCODE"(+) IS NOT NULL) THEN "A"."C_TACODE" ELSE "A"."C_TACODE" END ) * 6 - access("A"."C_TENANTID"="C"."C_TENANTID"(+) AND "A"."C_CAUSE"="C"."C_CAUSE"(+)) * 7 - access("A"."C_TENANTID"="D"."C_TENANTID"(+) AND "A"."C_OUTBUSINFLAG"="D"."C_REQUESTFLAG"(+) AND "A"."C_BUSINFLAG"="D"."C_BUSINFLAG"(+)) * 8 - access("A"."C_TENANTID"="B"."C_TENANTID"(+) AND "A"."C_TACODE"="B"."C_TACODE"(+) AND "A"."C_SHARETYPE"="B"."C_SHARETYPE"(+) AND "A"."C_FUNDCODE"="B"."C_FUNDCODE"(+)) * 10 - access("A"."C_TENANTID"="C"."C_TENANTID"(+) AND "A"."C_TACODE"="C"."C_TACODE"(+) AND "A"."D_CDATE"="C"."D_CDATE"(+) AND "A"."C_OTHERCODE"="C"."C_FUNDCODE"(+)) * 11 - access("A"."C_TENANTID"="FI"."C_TENANTID"(+) AND "A"."C_TACODE"="FI"."C_TACODE"(+) AND "A"."C_FUNDCODE"="FI"."C_FUNDCODE"(+)) * 13 - access("A"."D_CDATE"="D"."D_CDATE" AND "A"."C_CSERIALNO"="D"."C_CSERIALNOTOTAL" AND "A"."C_TENANTID"="D"."C_TENANTID") * 14 - access("D"."C_TENANTID"="ICBC"."C_TENANTID"(+) AND "D"."C_TACODE"="ICBC"."C_TACODE"(+) AND "D"."C_NETNO"="ICBC"."C_NETNO"(+) AND "D"."C_AGENCYNO"="ICBC"."C_AGENCYNO"(+) AND "D"."C_FUNDACCO"="ICBC"."C_FUNDACCO"(+)) * 15 - filter("D"."C_TENANTID"='*' AND "D"."F_CONFIRMSHARES">0) * 18 - access("C_FUNDACCO"=COALESCE( (SELECT "C_PARAMVALUE" FROM "TA_TEXTPARAMETER" "TA_TEXTPARAMETER" WHERE "C_PARAMITEM"='ICBCFundacco' AND "C_PARAMCLASS"='TADeal'),'***') AND "C_TENANTID"='*') * 18 - filter("C_TENANTID"='*') * 19 - filter("C_PARAMCLASS"='TADeal') * 20 - access("C_PARAMITEM"='ICBCFundacco') * 21 - filter(("A"."C_AGENCYNO"<>'207' OR "A"."C_BUSINFLAG"<>'13' AND "A"."C_BUSINFLAG"<>'16') AND "A"."C_BUSINFLAG"||"A"."C_OUTBUSINFLAG"<>'15088' AND "A"."C_ISDETAIL"='1' AND "A"."C_TAFLAG"||"A"."C_STATUS"<>'12' AND "A"."C_AGENCYNO"||"A"."C_TAFLAG"||"A"."C_BUSINFLAG"||"A"."C_CAUSE"<>'002170GHYH' AND "A"."C_AGENCYNO"||"A"."C_TAFLAG"||"A"."C_BUSINFLAG"||"A"."C_CAUSE"<>'002171GHYH' AND "A"."C_TACODE"='F6' AND "A"."C_TENANTID"='*') * 23 - filter("A"."C_TENANTID"='*' AND "A"."C_TACODE"='F6') * 24 - access("CHG"."C_FUNDCODE"="FI"."C_FUNDCODE" AND "CHG"."C_TACODE"="FI"."C_TACODE" AND "CHG"."C_TENANTID"="FI"."C_TENANTID") * 27 - filter("AI"."C_AGENCYNO"="A"."C_AGENCYNO" AND "AI"."C_TACODE"='F6' AND "AI"."C_TENANTID"='*' AND "AI"."C_TACODE"="A"."C_TACODE" AND "AI"."C_TENANTID"="A"."C_TENANTID") * 28 - access("CHG"."D_CDATE"="A"."D_CDATE" AND "CHG"."C_REQUESTNO"="A"."C_REQUESTNO" AND "CHG"."C_AGENCYNO"="A"."C_AGENCYNO" AND "CHG"."C_TACODE"="A"."C_TACODE" AND "CHG"."C_TENANTID"="A"."C_TENANTID") * 28 - filter(("CHG"."C_BUSINFLAG"='13' OR "CHG"."C_BUSINFLAG"='14') AND "CHG"."C_TACODE"='F6' AND "CHG"."C_TENANTID"='*' AND "CHG"."C_TACODE"="A"."C_TACODE" AND "CHG"."C_TENANTID"="A"."C_TENANTID" AND "CHG"."C_AGENCYNO"="AI"."C_AGENCYNO") * 30 - filter("FI"."C_TACODE"='F6' AND "FI"."C_TENANTID"='*' AND "FI"."C_TACODE"="A"."C_TACODE" AND "FI"."C_TENANTID"="A"."C_TENANTID") * 31 - filter("FI"."C_TACODE"(+)='F6' AND "FI"."C_TENANTID"(+)='*') * 32 - filter("C"."C_TACODE"(+)='F6' AND "C"."C_TENANTID"(+)='*') Note ----- - dynamic sampling used for this statement
对应的select部分如下:
SELECT a.c_tenantid, a.c_tacode, c_tradeacco, CASE CONCAT(CONCAT(CONCAT('F6' ,a.c_agencyno),c_taflag),a.c_businflag) WHEN '66003153' THEN ' ' ELSE c_cityno END c_cityno, a.c_fundcode, a.d_requestdate, d_requesttime, a.c_businflag, c_requestno, c_moneytype, f_shares, f_balance, f_confirmshares, f_confirmbalance, CASE a.c_fundacco WHEN ' ' THEN ' ' ELSE (CASE (SELECT t.c_paramvalue FROM ta_textparameter t WHERE c_paramitem='C_FUNDACCO3CHG') WHEN '1' THEN CONCAT('T',SUBSTR(a.c_fundacco,4,9)) ELSE a.c_fundacco END) END c_fundacco, c_custtype, d_hopedate, a.c_agencyno, d_cdate, f_stamptax, f_bsharefare, f_changefillfare, f_agentfare, f_fundfare, f_interesttax, f_factinterest, f_sumfare, c_oricserialno, f_agio, c_netno, c_otheragency, c_othernetno, CASE CONCAT(CONCAT(a.c_agencyno,a.c_businflag),a.c_adjustcause) WHEN '002704' THEN ' ' ELSE a.c_othertradeacco END c_othertradeacco, CASE a.c_otheracco WHEN ' ' THEN ' ' ELSE (CASE (SELECT t.c_paramvalue FROM ta_textparameter t WHERE c_paramitem='C_FUNDACCO3CHG') WHEN '1' THEN CONCAT('T',SUBSTR(a.c_otheracco,4,9)) ELSE a.c_otheracco END) END c_otheracco, c_cserialno, c_bonustype, c_freezecause, d_freezeenddate, c_orirequestno, c_chargetype, f_netvalue, c_datadetailflag, c_targetchargetype, c_changeflag, f_interestshare, f_backbalance, f_changefare, f_profitbalance, f_chincome_abs, c_incomeflag, f_breachfare, f_breachfare4fund, f_raiseinerest, c_requestendflag, c_exceedflag, d_registdate, c_childnetno, c_taflag, c_cserialnototal, f_othernetvalue, f_othercfmshares, c_protocolno, CASE a.c_sharetypes WHEN 'AB' THEN a.c_fundcode ELSE COALESCE(b.c_outfundcode,a.c_fundcode) END c_txtfundcode, COALESCE(c.c_outcause,a.c_cause) c_txtcause, COALESCE(d.c_confirmflag,CONCAT('1', SUBSTR(a.c_outbusinflag,2,2))) c_txtbusinflag, CASE a.c_sharetypes WHEN 'AB' THEN a.c_othercode ELSE COALESCE(e.c_outfundcode,a.c_othercode) END c_txtothercode, CASE CONCAT(TRIM(COALESCE(c.c_describe,a.c_errordetail)), ' ') WHEN ' ' THEN '0000' ELSE COALESCE(c.c_describe, a.c_errordetail) END c_txterrordetail, ' ' c_custno, a.c_adjustflag, a.f_profitcompensation, a.d_originaldate, a.c_combcode, a.c_specification, a.c_forceredemptiontype, a.f_otherfee2 FROM (SELECT /*+full(a) full(d) use_hash(d) */ CASE a.c_fundacco WHEN COALESCE(icbc.c_fundacco,'***' ) THEN COALESCE(icbc.c_tradeacco,a.c_tradeacco) ELSE a.c_tradeacco END c_tradeacco, CASE a.c_agencyno WHEN '002' THEN LPAD(TRIM(a.c_netno),4,'0') ELSE a.c_cityno END c_cityno, a.c_fundcode c_fundcode, CASE CONCAT(CONCAT(a.c_iversion,a.c_businflag),a.c_taflag) WHEN '400031' THEN getrealdays(a.c_tenantid, a.c_fundcode, a.c_agencyno, 20100513, -1*getsysvalue(a.c_tenantid, a.c_tacode, '*', '*', a.c_fundcode, 'FundTnConfirm', '1')) ELSE a.d_requestdate END d_requestdate, a.d_requesttime, a.c_tacode, a.c_tenantid, CASE CONCAT(a.c_businflag,a.c_taflag) WHEN '031' THEN '53' ELSE (CASE CONCAT(CONCAT(a.c_iversion,a.c_cause),a.c_businflag) WHEN '400200154' THEN '50' ELSE a.c_businflag END) END c_businflag, CASE CONCAT(a.c_agencyno,a.c_taflag) WHEN '0061' THEN (CASE a.c_outbusinflag WHEN '081' THEN a.c_freezeno ELSE ' ' END) WHEN '0021' THEN (CASE a.c_businflag WHEN '50' THEN (CASE a.c_requestno WHEN ' ' THEN a.c_cserialno ELSE a.c_requestno END) WHEN '54' THEN (CASE a.c_requestno WHEN ' ' THEN a.c_cserialno ELSE a.c_requestno END) ELSE ' ' END) ELSE (CASE a.c_requestno WHEN ' ' THEN a.c_cserialno ELSE a.c_requestno END) END c_requestno, COALESCE(fi.c_moneytype,'156') c_moneytype, CASE WHEN CONCAT(a.c_businflag,a.c_status) IN ('041','051','061') THEN a.f_confirmshares WHEN CONCAT(CONCAT(CONCAT('0',a.c_businflag),a.c_agencyno),a.c_status) = '1130021' THEN (CASE a.c_iversion WHEN '400' THEN a.f_shares ELSE a.f_confirmshares END) WHEN (CONCAT(a.c_iversion,a.c_agencyno) = '400002') AND (CONCAT(a.c_status,a.c_businflag) = '103') THEN a.f_confirmshares /*+ a.f_unshares*/ ELSE a.f_shares END f_shares, a.f_balance, CASE a.c_iversion WHEN '400' THEN d.f_confirmshares ELSE (CASE /*COALESCE(tai.c_changeonstep,'0')*/CONCAT(CONCAT(CONCAT('0',a.c_businflag),a.c_agencyno),a.c_status) WHEN '1130021' THEN /*COALESCE(chgin.f_confirmshares,0)*/ 0 ELSE d.f_confirmshares END) END f_confirmshares, CASE d.c_businflag WHEN '70' THEN 0 WHEN '71' THEN 0 WHEN '13' THEN (CASE a.c_iversion WHEN '400' THEN 1 ELSE 0 END)*(d.f_tradefare+d.f_backfare+d.f_otherfare1)+d.f_confirmbalance WHEN '16' THEN (CASE a.c_iversion WHEN '400' THEN 1 ELSE 0 END)*(d.f_tradefare+d.f_backfare+d.f_otherfare1)+d.f_confirmbalance ELSE d.f_confirmbalance END f_confirmbalance, a.c_fundacco, a.c_custtype, a.d_hopedate d_hopedate, a.c_agencyno, a.d_outputdate d_cdate, a.c_status, d.f_tradefare, d.f_stamptax, d.f_tafare, d.f_otherfare1, d.f_backfare, CASE a.c_businflag WHEN '03' THEN d.f_tradefare ELSE 0 END f_redeemfare, CASE d.c_businflag WHEN '03' THEN d.f_backfare ELSE 0 END f_bsharefare, CASE d.c_businflag WHEN '13' THEN d.f_backfare ELSE 0 END f_changefillfare, 0 f_agentfare, 0 f_fundfare, CASE a.c_businflag WHEN '54' THEN (CASE a.f_confirmbalance-a.f_frozenbalance WHEN 0 THEN 0 ELSE a.f_interesttax END) WHEN '50' THEN 0 ELSE a.f_interesttax END f_interesttax, 0 f_factinterest, (d.f_tradefare+d.f_stamptax+d.f_tafare+d.f_otherfare1+d.f_backfare+d.f_breachfare+d.f_profitbalance) f_sumfare, CASE WHEN 'F6' = '27' AND d.c_agencyno = '227' AND a.c_adjustcause<>'1' THEN (CASE a.c_businflag WHEN '15' THEN ' ' WHEN '16' THEN ' ' WHEN '05' THEN ' ' WHEN '70' THEN ' ' WHEN '21' THEN '' ELSE d.c_oricserialno END) ELSE d.c_oricserialno END c_oricserialno, a.f_agio,a.c_netno, a.c_otheragency,a.c_othernetno,a.c_othertradeacco, CASE a.c_businflag WHEN '13' THEN a.c_othercode WHEN '16' THEN a.c_othercode WHEN '70' THEN (CASE a.c_adjustcause WHEN '5' THEN a.c_othercode WHEN 'h' THEN a.c_othercode ELSE ' ' END) WHEN '71' THEN (CASE a.c_adjustcause WHEN '5' THEN a.c_othercode WHEN 'h' THEN a.c_othercode ELSE ' ' END) ELSE ' ' END c_othercode, a.c_otheracco, d.c_cserialno, CASE a.c_businflag WHEN '07' THEN a.c_bonustype ELSE ' ' END c_bonustype, a.c_freezecause, a.d_freezeenddate, a.f_frozenbalance, CASE a.c_fundacco WHEN COALESCE(icbc.c_fundacco,'***') THEN (CASE a.c_businflag WHEN '70' THEN a.c_tradeacco WHEN '71' THEN a.c_tradeacco ELSE (CASE CONCAT(a.c_agencyno,a.c_taflag) WHEN '0021' THEN ' ' ELSE a.c_orirequestno END) END) ELSE (CASE CONCAT(a.c_agencyno,a.c_taflag) WHEN '0021' THEN ' ' ELSE a.c_orirequestno END) END c_orirequestno, d.c_sharetype, CASE d.c_sharetype WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE d.c_sharetype END c_chargetype, a.f_netvalue, CASE a.c_businflag WHEN '13' THEN a.c_othershare WHEN '16' THEN a.c_sharetype WHEN '70' THEN a.c_sharetype WHEN '71' THEN a.c_sharetype ELSE ' ' END c_targetsharetype, '1' c_datadetailflag, CASE a.c_businflag WHEN '13' THEN (CASE a.c_othershare WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE a.c_othershare END) WHEN '16' THEN (CASE a.c_sharetype WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE a.c_sharetype END) WHEN '70' THEN (CASE a.c_sharetype WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE a.c_sharetype END) WHEN '71' THEN (CASE a.c_sharetype WHEN 'A' THEN '0' WHEN 'B' THEN '1' WHEN 'C' THEN '2' ELSE a.c_sharetype END) ELSE ' ' END c_targetchargetype, CASE a.c_businflag WHEN '13' THEN '0' WHEN '16' THEN '1' WHEN '12' THEN '0' WHEN '14' THEN '0' WHEN '15' THEN '1' ELSE ' ' END c_changeflag, 0 f_interestshare, 0 f_backbalance, CASE a.c_businflag WHEN '13' THEN d.f_tradefare ELSE 0 END f_changefare, d.f_profitbalance, 0 f_chincome_abs, '0' c_incomeflag, d.f_breachfare, 0 f_breachfare4fund, 0 f_raiseinerest, a.c_requestendflag, CASE a.c_requestendflag WHEN '1' THEN '0' ELSE a.c_exceedflag END c_exceedflag, COALESCE(d.d_registdate,a.d_cdate) d_registdate, SUBSTR(a.c_cause,5,100) c_errordetail, a.c_childnetno, CASE CONCAT(CONCAT(a.c_iversion,a.c_outbusinflag),a.c_businflag) WHEN '40002605' THEN '1' ELSE a.c_taflag END c_taflag, CASE a.c_iversion WHEN '400' THEN (CASE d.c_businflag WHEN '16' THEN (CASE a.c_tacode WHEN 'F6' THEN chgout.c_cserialno ELSE d.c_cserialnototal END) /*3 c_tacode*/ WHEN '15' THEN (CASE a.c_agencyno WHEN a.c_otheragency THEN d.c_cserialnoout ELSE d.c_cserialnototal END) ELSE d.c_cserialnototal END) ELSE d.c_cserialnototal END c_cserialnototal, CASE a.c_businflag WHEN '14' THEN (CASE CONCAT(a.c_iversion,a.c_outbusinflag) WHEN '400033'THEN (CASE a.c_agencyno WHEN a.c_otheragency THEN '133' ELSE '135' END) ELSE a.c_outbusinflag END) WHEN '15' THEN (CASE CONCAT(a.c_iversion,a.c_outbusinflag) WHEN '400033'THEN (CASE a.c_agencyno WHEN a.c_otheragency THEN '133' ELSE '134' END) ELSE a.c_outbusinflag END) WHEN '12' THEN (CASE CONCAT(a.c_iversion,a.c_outbusinflag) WHEN '400033'THEN '133' ELSE a.c_outbusinflag END) WHEN '13' THEN (CASE a.c_iversion WHEN '400' THEN (CASE (CASE a.c_tacode WHEN ' ' THEN 'F6' ELSE a.c_tacode END) WHEN 'F6' THEN '136' ELSE '038' END) ELSE (CASE /*nvl(tai.c_changeonstep,'0')*/'0' WHEN '1' THEN '***' ELSE a.c_outbusinflag END) END) WHEN '16' THEN (CASE a.c_iversion WHEN '400' THEN (CASE (CASE a.c_tacode WHEN ' ' THEN 'F6' ELSE a.c_tacode END) WHEN 'F6' THEN '136' ELSE '038' END) ELSE (CASE /*nvl(tai.c_changeonstep,'0')*/'0' WHEN '1' THEN '***' ELSE a.c_outbusinflag END) END) WHEN '04' THEN (CASE a.c_iversion WHEN '400' THEN '126' ELSE (CASE a.c_agencyno WHEN '006' THEN '126' ELSE a.c_outbusinflag END) END) WHEN '05' THEN (CASE a.c_iversion WHEN '400' THEN '127' ELSE (CASE CONCAT(a.c_agencyno,a.c_outbusinflag) WHEN '006026' THEN '*' ELSE a.c_outbusinflag END) END) WHEN '06' THEN (CASE a.c_iversion WHEN '400' THEN (CASE a.c_outbusinflag WHEN '026' THEN '126' ELSE a.c_outbusinflag END) ELSE (CASE CONCAT(a.c_agencyno,a.c_outbusinflag) WHEN '006026' THEN '126' ELSE a.c_outbusinflag END) END) ELSE a.c_outbusinflag END c_outbusinflag, a.f_otherprice f_othernetvalue, CASE /*tai.c_changeonstep*/CONCAT(CONCAT('0',a.c_businflag),a.c_status) WHEN '1131' THEN (CASE a.c_agencyno WHEN '002'THEN 0 ELSE /*COALESCE(chgin.f_confirmshares,0)*/ 0 END) ELSE 0 END f_othercfmshares, CASE CONCAT(a.c_iversion,a.c_agencyno) WHEN '400002' THEN (CASE INSTR('039059060061',a.c_outbusinflag) WHEN 0 THEN '' ELSE (CASE CONCAT(TRIM(a.c_otheracco),' ') WHEN ' ' THEN a.c_protocolno ELSE TRIM(a.c_otheracco) END) END) ELSE a.c_protocolno END c_protocolno, a.c_custno, CASE WHEN (a.c_adjustcause = '5') AND (a.c_agencyno = '004') THEN '8' ELSE '' END c_adjustflag, 0 f_profitcompensation, d.d_originaldate, ' ' c_combcode, a.c_adjustcause, a.c_memo c_specification, a.c_cause, a.c_forceredemptiontype, CASE d.c_sharetype WHEN 'C' THEN d.f_otherfare1 ELSE 0 END f_otherfee2, a.c_sharetypes FROM "sett_ta_tconfirm_*_F6" a LEFT JOIN ta_tfundinfo fi ON (a.c_fundcode = fi.c_fundcode AND a.c_tacode = fi.c_tacode AND a.c_tenantid = fi.c_tenantid) LEFT JOIN ta_tnetvalueday c ON (a.c_othercode = c.c_fundcode AND a.d_cdate = c.d_cdate AND a.c_tacode = c.c_tacode AND a.c_tenantid = c.c_tenantid) LEFT JOIN (SELECT /*+ no_merge */chg.d_cdate, chg.c_cserialno, chg.c_requestno, chg.c_agencyno, chg.c_tacode, chg.c_tenantid FROM "sett_ta_tconfirm_*_F6" chg , ta_tagencyexpbatch ai, ta_tfundinfo fi WHERE chg.c_agencyno = ai.c_agencyno AND chg.c_tacode = ai.c_tacode AND chg.c_tenantid = ai.c_tenantid AND chg.c_fundcode = fi.c_fundcode AND chg.c_businflag IN ('13','14') AND chg.c_tacode = fi.c_tacode AND chg.c_tenantid = fi.c_tenantid) chgout ON (a.c_requestno = chgout.c_requestno AND a.d_cdate = chgout.d_cdate AND a.c_agencyno = chgout.c_agencyno AND a.c_tacode = chgout.c_tacode AND a.c_tenantid = chgout.c_tenantid), ta_tconfirmdetail d LEFT JOIN (SELECT /*+ no_merge */c_fundacco, c_agencyno, c_netno, c_tradeacco, c_tacode, c_tenantid FROM ta_tacconet WHERE c_fundacco = COALESCE((SELECT c_paramvalue FROM ta_textparameter WHERE c_paramclass = 'TADeal' AND c_paramitem = 'ICBCFundacco'),'***' )) icbc ON (d.c_fundacco = icbc.c_fundacco AND d.c_agencyno = icbc.c_agencyno AND d.c_netno = icbc.c_netno AND d.c_tacode = icbc.c_tacode AND d.c_tenantid = icbc.c_tenantid) WHERE a.c_tacode = 'F6' AND a.c_tenantid = '*' AND a.d_cdate = d.d_cdate AND a.c_cserialno = d.c_cserialnototal AND a.c_tenantid = d.c_tenantid AND d.f_confirmshares > 0 AND CONCAT(a.c_taflag, a.c_status) <>'12' AND CONCAT(a.c_businflag, a.c_outbusinflag) <> '15088' AND CONCAT(CONCAT(CONCAT(a.c_agencyno,a.c_taflag),a.c_businflag),a.c_cause)<>'002170GHYH' AND CONCAT(CONCAT(CONCAT(a.c_agencyno,a.c_taflag),a.c_businflag),a.c_cause)<>'002171GHYH' AND a.c_isdetail = '1' AND (a.c_agencyno <> '207' OR a.c_businflag NOT IN ('13','16')) ) a LEFT JOIN ta_tfundcodechange b ON (a.c_fundcode = b.c_fundcode AND a.c_sharetype = b.c_sharetype AND a.c_tacode = b.c_tacode AND a.c_tenantid = b.c_tenantid) LEFT JOIN ta_terrormess c ON (a.c_cause = c.c_cause AND a.c_tenantid = c.c_tenantid) LEFT JOIN ta_tbusinchangeout d ON (a.c_businflag = d.c_businflag AND a.c_outbusinflag = d.c_requestflag AND a.c_tenantid = d.c_tenantid) LEFT JOIN ta_tfundcodechange e ON (a.c_othercode = e.c_fundcode AND a.c_targetsharetype = e.c_sharetype AND a.c_tacode = b.c_tacode AND a.c_tenantid = e.c_tenantid);
Plan Hash Value : ------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | Time | ------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 756 | 57603 | 00:11:32 | | * 1 | INDEX RANGE SCAN | IDX_TEXTPARAMETER_VALUE | 2 | 36 | 1 | 00:00:01 | | * 2 | INDEX RANGE SCAN | IDX_TEXTPARAMETER_VALUE | 2 | 36 | 1 | 00:00:01 | | * 3 | HASH JOIN OUTER | | 1 | 756 | 57603 | 00:11:32 | | 4 | VIEW | | 1 | 725 | 57601 | 00:11:32 | | * 5 | HASH JOIN OUTER | | 1 | 740 | 57601 | 00:11:32 | | * 6 | HASH JOIN OUTER | | 1 | 705 | 57598 | 00:11:32 | | * 7 | HASH JOIN OUTER | | 1 | 692 | 57594 | 00:11:32 | | 8 | VIEW | | 1 | 658 | 57592 | 00:11:32 | | * 9 | HASH JOIN OUTER | | 1 | 904 | 57592 | 00:11:32 | | * 10 | HASH JOIN OUTER | | 1 | 886 | 57574 | 00:11:31 | | * 11 | HASH JOIN OUTER | | 1 | 826 | 28866 | 00:05:47 | | * 12 | HASH JOIN | | 1 | 810 | 28848 | 00:05:47 | | * 13 | HASH JOIN OUTER | | 1 | 295 | 3 | 00:00:01 | | * 14 | TABLE ACCESS FULL | TA_TCONFIRMDETAIL | 1 | 245 | 2 | 00:00:01 | | 15 | VIEW | | 1 | 50 | 1 | 00:00:01 | | 16 | TABLE ACCESS BY GLOBAL INDEX ROWID | TA_TACCONET | 1 | 40 | 1 | 00:00:01 | | * 17 | INDEX RANGE SCAN | PK_TACCONET | 1 | | 1 | 00:00:01 | | * 18 | TABLE ACCESS BY INDEX ROWID | TA_TEXTPARAMETER | 1 | 25 | 1 | 00:00:01 | | * 19 | INDEX RANGE SCAN | IDX_TEXTPARAMETER_VALUE | 170 | | 1 | 00:00:01 | | * 20 | TABLE ACCESS FULL | sett_ta_tconfirm_*_F6 | 2201315 | 1133677225 | 28839 | 00:05:47 | | * 21 | TABLE ACCESS FULL | TA_TFUNDINFO | 401 | 6416 | 18 | 00:00:01 | | 22 | VIEW | | 1149 | 68940 | 28708 | 00:05:45 | | * 23 | HASH JOIN | | 1149 | 105708 | 28708 | 00:05:45 | | * 24 | TABLE ACCESS FULL | TA_TFUNDINFO | 401 | 4812 | 18 | 00:00:01 | | * 25 | HASH JOIN | | 1152 | 92160 | 28690 | 00:05:45 | | * 26 | TABLE ACCESS FULL | TA_TAGENCYEXPBATCH | 99 | 891 | 3 | 00:00:01 | | * 27 | TABLE ACCESS FULL | sett_ta_tconfirm_*_F6 | 1164 | 82644 | 28687 | 00:05:45 | | * 28 | TABLE ACCESS FULL | TA_TNETVALUEDAY | 2411 | 43398 | 18 | 00:00:01 | | 29 | TABLE ACCESS FULL | TA_TFUNDCODECHANGE | 1 | 34 | 2 | 00:00:01 | | 30 | TABLE ACCESS FULL | TA_TBUSINCHANGEOUT | 83 | 1079 | 3 | 00:00:01 | | 31 | TABLE ACCESS FULL | TA_TERRORMESS | 311 | 10885 | 3 | 00:00:01 | | 32 | TABLE ACCESS FULL | TA_TFUNDCODECHANGE | 1 | 31 | 2 | 00:00:01 | ------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): ------------------------------------------ * 1 - access("C_PARAMITEM"='C_FUNDACCO3CHG') * 2 - access("C_PARAMITEM"='C_FUNDACCO3CHG') * 3 - access("A"."C_TENANTID"="E"."C_TENANTID"(+) AND "A"."C_TARGETSHARETYPE"="E"."C_SHARETYPE"(+) AND "A"."C_OTHERCODE"="E"."C_FUNDCODE"(+)) * 3 - filter("B"."C_TACODE"=CASE WHEN ("E"."C_FUNDCODE"(+) IS NOT NULL) THEN "A"."C_TACODE" ELSE "A"."C_TACODE" END ) * 5 - access("A"."C_TENANTID"="C"."C_TENANTID"(+) AND "A"."C_CAUSE"="C"."C_CAUSE"(+)) * 6 - access("A"."C_TENANTID"="D"."C_TENANTID"(+) AND "A"."C_OUTBUSINFLAG"="D"."C_REQUESTFLAG"(+) AND "A"."C_BUSINFLAG"="D"."C_BUSINFLAG"(+)) * 7 - access("A"."C_TENANTID"="B"."C_TENANTID"(+) AND "A"."C_TACODE"="B"."C_TACODE"(+) AND "A"."C_SHARETYPE"="B"."C_SHARETYPE"(+) AND "A"."C_FUNDCODE"="B"."C_FUNDCODE"(+)) * 9 - access("A"."C_TENANTID"="C"."C_TENANTID"(+) AND "A"."C_TACODE"="C"."C_TACODE"(+) AND "A"."D_CDATE"="C"."D_CDATE"(+) AND "A"."C_OTHERCODE"="C"."C_FUNDCODE"(+)) * 10 - access("A"."C_TENANTID"="CHGOUT"."C_TENANTID"(+) AND "A"."C_TACODE"="CHGOUT"."C_TACODE"(+) AND "A"."C_AGENCYNO"="CHGOUT"."C_AGENCYNO"(+) AND "A"."D_CDATE"="CHGOUT"."D_CDATE"(+) AND "A"."C_REQUESTNO"="CHGOUT"."C_REQUESTNO"(+)) * 11 - access("A"."C_TENANTID"="FI"."C_TENANTID"(+) AND "A"."C_TACODE"="FI"."C_TACODE"(+) AND "A"."C_FUNDCODE"="FI"."C_FUNDCODE"(+)) * 12 - access("A"."D_CDATE"="D"."D_CDATE" AND "A"."C_CSERIALNO"="D"."C_CSERIALNOTOTAL" AND "A"."C_TENANTID"="D"."C_TENANTID") * 13 - access("D"."C_TENANTID"="ICBC"."C_TENANTID"(+) AND "D"."C_TACODE"="ICBC"."C_TACODE"(+) AND "D"."C_NETNO"="ICBC"."C_NETNO"(+) AND "D"."C_AGENCYNO"="ICBC"."C_AGENCYNO"(+) AND "D"."C_FUNDACCO"="ICBC"."C_FUNDACCO"(+)) * 14 - filter("D"."C_TENANTID"='*' AND "D"."F_CONFIRMSHARES">0) * 17 - access("C_FUNDACCO"=COALESCE( (SELECT "C_PARAMVALUE" FROM "TA_TEXTPARAMETER" "TA_TEXTPARAMETER" WHERE "C_PARAMITEM"='ICBCFundacco' AND "C_PARAMCLASS"='TADeal'),'***') AND "C_TENANTID"='*') * 17 - filter("C_TENANTID"='*') * 18 - filter("C_PARAMCLASS"='TADeal') * 19 - access("C_PARAMITEM"='ICBCFundacco') * 20 - filter("A"."C_BUSINFLAG"||"A"."C_OUTBUSINFLAG"<>'15088' AND "A"."C_ISDETAIL"='1' AND "A"."C_TAFLAG"||"A"."C_STATUS"<>'12' AND "A"."C_AGENCYNO"||"A"."C_TAFLAG"||"A"."C_BUSINFLAG"||"A"."C_CAUSE"<>'002170GHYH' AND "A"."C_AGENCYNO"||"A"."C_TAFLAG"||"A"."C_BUSINFLAG"||"A"."C_CAUSE"<>'002171GHYH' AND ("A"."C_AGENCYNO"<>'207' OR "A"."C_BUSINFLAG"<>'13' AND "A"."C_BUSINFLAG"<>'16') AND "A"."C_TACODE"='F6' AND "A"."C_TENANTID"='*') * 21 - filter("FI"."C_TACODE"(+)='F6' AND "FI"."C_TENANTID"(+)='*') * 23 - access("CHG"."C_FUNDCODE"="FI"."C_FUNDCODE" AND "CHG"."C_TACODE"="FI"."C_TACODE" AND "CHG"."C_TENANTID"="FI"."C_TENANTID") * 24 - filter("FI"."C_TACODE"='F6' AND "FI"."C_TENANTID"='*') * 25 - access("CHG"."C_AGENCYNO"="AI"."C_AGENCYNO" AND "CHG"."C_TACODE"="AI"."C_TACODE" AND "CHG"."C_TENANTID"="AI"."C_TENANTID") * 26 - filter("AI"."C_TACODE"='F6' AND "AI"."C_TENANTID"='*') * 27 - filter(("CHG"."C_BUSINFLAG"='13' OR "CHG"."C_BUSINFLAG"='14') AND "CHG"."C_TACODE"='F6' AND "CHG"."C_TENANTID"='*') * 28 - filter("C"."C_TACODE"(+)='F6' AND "C"."C_TENANTID"(+)='*')
解决方法也很简单,只需要固定执行计划即可,只是需要注意下这种情况会出现即可,不要直接select拷贝到insert select就认为肯定相同。