ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

oracle insert select和select执行计划不同解决

2021-09-30 14:34:24  阅读:182  来源: 互联网

标签:CASE insert 00 END WHEN ELSE CONCAT oracle 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就认为肯定相同。

标签:CASE,insert,00,END,WHEN,ELSE,CONCAT,oracle,select
来源: https://www.cnblogs.com/zhjh256/p/9521709.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有