经典的标量子查询

explain plan for ( select 'C10927' as YXJGDM, --银行机构代码
           '20110213000003' as JRXKZH, --金融许可证号
           a.SIGN_ORG as NBJGH, --内部机构号
           case
             when substr(b.product_name, 1, 3) = '如意宝' and
                  substr(a.cust_no, 1, 1) = '1' then
              '219'
             when substr(b.product_name, 1, 3) = '如意宝' and
                  substr(a.cust_no, 1, 1) <> '1' then
              '218'
             else
              '40605'
           end as MXKMBH, --明细科目编号
           c.org_name as YXJGMC, --银行机构名称
           case
             when substr(b.product_name, 1, 3) = '如意宝' and
                  substr(a.cust_no, 1, 1) = '1' then
              '个人如意宝存款'
             when substr(b.product_name, 1, 3) = '如意宝' and
                  substr(a.cust_no, 1, 1) <> '1' then
              '单位如意宝存款'
             else
              '委托理财负债'
           end as MXKMMC, --明细科目名称
           a.acct_no as LCZH, --理财帐号
           a.cust_no as KHTYBH, --客户统一编号
           a.cust_name as KHXM, --客户姓名
           
(case
             when length(a.acct_no) = 16 then
              (select MASTER_CARD_NO
                 from dwf.F_AGT_CADB_BOOK_H
                where start_dt <= date '2014-09-30'
                  and end_dt > date '2014-09-30'
                  and agmt_id = a.acct_no)
             else
              a.acct_no
           end) as GLHQCKZH, --,


           b.product_name as LCCPMC, --理财产品名称
           b.product_no as HNBSM, --行内标识码
           trunc(a.FINANCE_AMT, 0) as FEZS, --份额总数
           trunc(a.FINANCE_AMT, 0) as DJFE, --冻结份额
           '否' as HLZTZBZ, --再投资标志
           PROF_AMT as BQSY, --本期收益
           PROF_AMT as LJSY, --累计收益
           a.FINANCE_AMT as MRCB, --买入成本
           to_char(b.START_DATE, 'yyyymmdd') as BQQSRQ, --本期起始日期
           to_char(b.maturity_dt, 'yyyymmdd') as BQDQRQ, --本期到期日期
          
 nvl((case
                 when length(a.acct_no) = 16 then
                  (select to_char(OPEN_DATE, 'yyyymmdd')
                     from dwf.F_AGT_CADB_BOOK_H
                    where start_dt <= date '2014-09-30'
                      and end_dt > date '2014-09-30'
                      and agmt_id = a.acct_no)
                 else
                  (select to_char(OPEN_DATE, 'yyyymmdd')
                     from dwf.F_AGT_SAVB_BASICINFO_H
                    where start_dt <= date '2014-09-30'
                      and end_dt > date '2014-09-30'
                      and agmt_id = a.acct_no)
               end),
               (select to_char(OPEN_DATE, 'yyyymmdd')
                  from dwf.F_AGT_CADB_BOOK_H
                 where start_dt <= date '2014-09-30'
                   and end_dt > date '2014-09-30'
                   and agmt_id = a.acct_no)
				   ) as KHRQ, --开户日期

				   
           to_char(FREEZE_START_DATE, 'yyyymmdd') as SCDHRQ, --上次动户日期就是气息日
           to_char(date '2014-09-30', 'yyyymmdd') as CJRQ
      from DWF.F_EVT_EXTR_FINANCE_BOOK a
      left join dwf.f_extc_finance_para b
        on a.product_no = b.product_no
      left join dwm.b_m_sys_branch c
        on a.SIGN_ORG = c.org_id
     where b.freeze_end_date between date '2014-01-01' and date '2014-09-30'
       and a.in_acct_date is not null --到帐日就是结息日就是到期日 只统计到期日
       and a.VALID_FLAG = '1'
       and a.deduct_flag = '1'
       and a.acct_flag in ('1', '2')
       and a.product_no in (select product_no
                              from dwf.f_extc_finance_para
                             where PRODUCT_TERM <> 0));
							 
select * from table(dbms_xplan.display());
select * from table(dbms_xplan.display());

Plan hash value: 3881317398

---------------------------------------------------------------------------------------------------------
| Id  | Operation                     | Name                    | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |                         | 18473 |  2904K|  7488   (2)| 00:01:30 |
|   1 |  TABLE ACCESS BY INDEX ROWID  | F_AGT_CADB_BOOK_H       |     1 |    54 | 72313   (1)| 00:14:28 |
|*  2 |   INDEX SKIP SCAN             | F_AGT_CADB_BOOK_H_IDX1  |     2 |       | 72312   (1)| 00:14:28 |
|   3 |  TABLE ACCESS BY INDEX ROWID  | F_AGT_CADB_BOOK_H       |     1 |    42 | 72313   (1)| 00:14:28 |
|*  4 |   INDEX SKIP SCAN             | F_AGT_CADB_BOOK_H_IDX1  |     2 |       | 72312   (1)| 00:14:28 |
|*  5 |   TABLE ACCESS BY INDEX ROWID | F_AGT_SAVB_BASICINFO_H  |     1 |    45 |     6   (0)| 00:00:01 |
|*  6 |    INDEX SKIP SCAN            | SYS_C0026015            |     2 |       |     4   (0)| 00:00:01 |
|   7 |    TABLE ACCESS BY INDEX ROWID| F_AGT_CADB_BOOK_H       |     1 |    42 | 72313   (1)| 00:14:28 |
|*  8 |     INDEX SKIP SCAN           | F_AGT_CADB_BOOK_H_IDX1  |     2 |       | 72312   (1)| 00:14:28 |
|*  9 |  HASH JOIN RIGHT SEMI         |                         | 18473 |  2904K|  7488   (2)| 00:01:30 |
|* 10 |   TABLE ACCESS FULL           | F_EXTC_FINANCE_PARA     |   804 |  9648 |     9   (0)| 00:00:01 |
|* 11 |   HASH JOIN RIGHT OUTER       |                         | 18473 |  2687K|  7478   (2)| 00:01:30 |
|  12 |    TABLE ACCESS FULL          | B_M_SYS_BRANCH          |   154 |  3234 |     4   (0)| 00:00:01 |
|* 13 |    HASH JOIN                  |                         | 18473 |  2309K|  7474   (2)| 00:01:30 |
|* 14 |     TABLE ACCESS FULL         | F_EXTC_FINANCE_PARA     |   286 | 14872 |     9   (0)| 00:00:01 |
|* 15 |     TABLE ACCESS FULL         | F_EVT_EXTR_FINANCE_BOOK | 52350 |  3885K|  7464   (2)| 00:01:30 |
---------------------------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   2 - access("AGMT_ID"=:B1 AND "END_DT">TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss') AND "START_DT"<=TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
       filter("AGMT_ID"=:B1 AND "END_DT">TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss') AND "START_DT"<=TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
   4 - access("AGMT_ID"=:B1 AND "END_DT">TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss') AND "START_DT"<=TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
       filter("AGMT_ID"=:B1 AND "END_DT">TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss') AND "START_DT"<=TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
   5 - filter("END_DT">TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
   6 - access("AGMT_ID"=:B1 AND "START_DT"<=TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss'))
       filter("AGMT_ID"=:B1 AND "START_DT"<=TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss'))
              
   8 - access("AGMT_ID"=:B1 AND "END_DT">TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss') AND "START_DT"<=TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
       filter("AGMT_ID"=:B1 AND "END_DT">TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd 
              hh24:mi:ss') AND "START_DT"<=TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
              
   9 - access("A"."PRODUCT_NO"="PRODUCT_NO")
  10 - filter(TO_NUMBER("PRODUCT_TERM")<>0)
  11 - access("A"."SIGN_ORG"="C"."ORG_ID"(+))
  13 - access("A"."PRODUCT_NO"="B"."PRODUCT_NO")
  14 - filter("B"."FREEZE_END_DATE">=TO_DATE(' 2014-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') 
              AND "B"."FREEZE_END_DATE"<=TO_DATE(' 2014-09-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
  15 - filter("A"."IN_ACCT_DATE" IS NOT NULL AND ("A"."ACCT_FLAG"='1' OR "A"."ACCT_FLAG"='2') 
              AND "A"."DEDUCT_FLAG"='1' AND "A"."VALID_FLAG"='1')

原文地址:https://www.cnblogs.com/hzcya1995/p/13352023.html