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就认为肯定相同。

posted @ 2021-09-30 14:28  zhjh256  阅读(930)  评论(1编辑  收藏  举报