zoukankan      html  css  js  c++  java
  • 优化大型复杂SQL

    with aa as
     (select 
             a.agmt_id,
             sum(c.acct_bal) as card_bal, --借记卡期末存款余额
             a.card_open_org,
             a.OPEN_DATE, -- 发卡日期     
             a.CARD_NEW_STATUS, -- 卡片状态    
             a.cust_magr, -- 客户经理号 
             a.cust_no, -- 客户号
             a.corp_org
        from dwf.f_agt_cadb_book_h a
        left outer join (select agmt_id, acct_no
                          from dwf.f_agt_cadb_acct
                         where substr(acct_status, 8, 1) <> '2') b
          on a.master_card_no = b.agmt_id
        left outer join (select agmt_id, max(last_trans_date) last_trans_date, sum(acct_bal) acct_bal
                          from dwf.F_AGT_SAVB_ACCTINFO_H
                         where start_dt <= to_date('2014-03-31', 'YYYY-MM-DD')
                           and end_dt > to_date('2014-03-31', 'YYYY-MM-DD')
                           and acct_status <> '1'
                           group by  agmt_id
                           
                           ) c  -- 一卡多账号,某一账号睡眠其它未睡 ,卡账务信息表最后交易日期不准
          on b.acct_no = c.agmt_id
       where substr(a.host_card_status, 8, 1) = '0' --卡状态不为注销
         and a.master_card_no is not null --剔除待领卡
         and a.start_dt <= to_date('2014-03-31', 'YYYY-MM-DD') /*参数传入 季末日期*/
         and a.end_dt > to_date('2014-03-31', 'YYYY-MM-DD') /*参数传入 季末日期*/
         and c.LAST_TRANS_DATE < to_date( '2014-03-01', 'YYYY-MM-DD') /*参数传入 季末日期*/
         and c.acct_bal is not null
       group by a.agmt_id,
                a.card_open_org,
                a.OPEN_DATE, -- 发卡日期     
                a.CARD_NEW_STATUS, -- 卡片状态    
                a.cust_magr, -- 客户经理号  
                a.cust_no, -- 客户号
                a.corp_org
      having(sum(c.acct_bal) < 10)),
    bb as
     (SELECT xx.tran_card_no, count(1) cnt, max(xx.trans_date) max_date
        FROM DWF.F_EVT_CADJ_JOUR xx
       WHERE TRANS_DATE <= to_date('2014-03-31', 'YYYY-MM-DD')
       group by xx.tran_card_no)
    select aa.agmt_id, -- 卡号        
           'J' AS CARD_T, -- 卡种类      
           f.pty_name, -- 客户姓名    
           aa.cust_no, -- 客户证件号  
           f.mobile_no, -- 客户手机号  
           aa.OPEN_DATE, -- 发卡日期    
           null as ACTIVEDAY, -- 激活日期    
           aa.CARD_NEW_STATUS, -- 卡片状态    
           to_date('2014-03-31', 'YYYY-MM-DD') - nvl(bb.MAX_DATE, aa.OPEN_DATE) as sleep_day, -- 睡眠时间    
           card_bal, -- 存款余额    
           null as cred_limit, -- 授信额度    
           bb.cnt, -- 交易次数    
           aa.cust_magr, -- 客户经理号  
           xx.emp_name, -- 客户经理名称
           aa.card_open_org, -- 所属机构  
           bb.MAX_DATE
      from aa
      left join bb
        on aa.agmt_id = bb.tran_card_no
      LEFT JOIN dwm.v_m_pty_emp_info xx --员工表
        ON aa.cust_magr = xx.pty_id
       AND xx.start_dt <= to_date('2014-03-31', 'YYYY-MM-DD')
       AND xx.end_dt > to_date('2014-03-31', 'YYYY-MM-DD')
      LEFT JOIN dwf.f_pty_table f --当事人主表
        ON aa.cust_no = f.pty_id
       AND aa.corp_org = f.corp_org
       AND f.start_dt <= to_date('2014-03-31', 'YYYY-MM-DD')
       AND f.end_dt > to_date('2014-03-31', 'YYYY-MM-DD') 
       where   bb.MAX_DATE < to_date( '2014-03-01', 'YYYY-MM-DD')
       and aa.card_open_org in (SELECT t.Org_Id
                               FROM b_m_Sys_Branch t
                              WHERE t.Status = 1
                                AND t.Dept_Flag != '2'
                             CONNECT BY  PRIOR t.Id = t.Parent_Id
                              START WITH t.Org_Id =10000) ;
    
    
    这SQL跑了半天也没出结果,看下执行计划:
                              select * from table(dbms_xplan.display());
    Plan hash value: 4046975539
     
    -------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                       | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |
    -------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                                |                       |    21 |  5040 |   267K  (2)| 00:53:36 |
    |   1 |  NESTED LOOPS OUTER                             |                       |    21 |  5040 |   267K  (2)| 00:53:36 |
    |   2 |   NESTED LOOPS OUTER                            |                       |     6 |  1266 |   267K  (2)| 00:53:36 |
    |*  3 |    HASH JOIN                                    |                       |     6 |   900 |   267K  (2)| 00:53:36 |
    |*  4 |     HASH JOIN                                   |                       |     6 |   660 |   179K  (2)| 00:35:56 |
    |   5 |      VIEW                                       | VW_NSO_1              |     6 |   162 |     4  (25)| 00:00:01 |
    |   6 |       HASH UNIQUE                               |                       |     6 |   294 |     4  (25)| 00:00:01 |
    |*  7 |        FILTER                                   |                       |       |       |            |          |
    |*  8 |         CONNECT BY NO FILTERING WITH SW (UNIQUE)|                       |       |       |            |          |
    |   9 |          TABLE ACCESS FULL                      | B_M_SYS_BRANCH        |   144 |  2880 |     3   (0)| 00:00:01 |
    |  10 |      VIEW                                       |                       |    28 |  2324 |   179K  (2)| 00:35:56 |
    |* 11 |       FILTER                                    |                       |       |       |            |          |
    |  12 |        HASH GROUP BY                            |                       |    28 |  5908 |   179K  (2)| 00:35:56 |
    |* 13 |         HASH JOIN                               |                       |   552 |   113K|   179K  (2)| 00:35:56 |
    |* 14 |          HASH JOIN                              |                       |  2835 |   260K|   110K  (3)| 00:22:10 |
    |  15 |           VIEW                                  |                       |  2805 |   117K|   107K  (3)| 00:21:32 |
    |* 16 |            FILTER                               |                       |       |       |            |          |
    |  17 |             HASH GROUP BY                       |                       |  2805 |   142K|   107K  (3)| 00:21:32 |
    |* 18 |              TABLE ACCESS FULL                  | F_AGT_SAVB_ACCTINFO_H |  8624K|   427M|   107K  (2)| 00:21:25 |
    |* 19 |           TABLE ACCESS FULL                     | F_AGT_CADB_ACCT       | 38498 |  1917K|  3128   (1)| 00:00:38 |
    |* 20 |          TABLE ACCESS FULL                      | F_AGT_CADB_BOOK_H     | 61287 |  7002K| 68898   (2)| 00:13:47 |
    |  21 |     VIEW                                        |                       | 13290 |   519K| 88273   (2)| 00:17:40 |
    |* 22 |      FILTER                                     |                       |       |       |            |          |
    |  23 |       HASH GROUP BY                             |                       | 13290 |   337K| 88273   (2)| 00:17:40 |
    |* 24 |        TABLE ACCESS FULL                        | F_EVT_CADJ_JOUR       |    12M|   298M| 87422   (1)| 00:17:30 |
    |* 25 |    TABLE ACCESS BY INDEX ROWID                  | F_PTY_TABLE           |     1 |    61 |     3   (0)| 00:00:01 |
    |* 26 |     INDEX RANGE SCAN                            | SYS_C0061472          |     1 |       |     2   (0)| 00:00:01 |
    |  27 |   VIEW PUSHED PREDICATE                         | V_M_PTY_EMP_INFO      |     3 |    87 |     4   (0)| 00:00:01 |
    |* 28 |    HASH JOIN OUTER                              |                       |     3 |   153 |   122   (2)| 00:00:02 |
    |* 29 |     TABLE ACCESS BY INDEX ROWID                 | F_PTY_EMP_INFO        |     3 |    99 |     4   (0)| 00:00:01 |
    |* 30 |      INDEX RANGE SCAN                           | EMP_IDX_002           |     3 |       |     1   (0)| 00:00:01 |
    |* 31 |     VIEW                                        |                       | 24404 |   428K|   118   (2)| 00:00:02 |
    |* 32 |      HASH JOIN RIGHT OUTER                      |                       | 24404 |  1406K|   118   (2)| 00:00:02 |
    |* 33 |       TABLE ACCESS FULL                         | B_M_SYS_BRANCH        |    36 |   504 |     3   (0)| 00:00:01 |
    |* 34 |       TABLE ACCESS FULL                         | B_M_SYS_BRANCH        |     1 |    11 |     3   (0)| 00:00:01 |
    |  35 |       VIEW                                      |                       | 24404 |  1072K|   115   (2)| 00:00:02 |
    |* 36 |        HASH JOIN RIGHT OUTER                    |                       | 24404 |  2049K|   115   (2)| 00:00:02 |
    |* 37 |         TABLE ACCESS FULL                       | B_M_SYS_BRANCH        |    36 |   504 |     3   (0)| 00:00:01 |
    |* 38 |         TABLE ACCESS FULL                       | B_M_SYS_BRANCH        |     1 |    11 |     3   (0)| 00:00:01 |
    |  39 |         VIEW                                    |                       | 24404 |  1715K|   111   (1)| 00:00:02 |
    |* 40 |          HASH JOIN RIGHT OUTER                  |                       | 24404 |  1882K|   111   (1)| 00:00:02 |
    |* 41 |           TABLE ACCESS FULL                     | B_M_SYS_BRANCH        |    36 |   504 |     3   (0)| 00:00:01 |
    |* 42 |           HASH JOIN RIGHT OUTER                 |                       | 24404 |  1549K|   108   (1)| 00:00:02 |
    |  43 |            TABLE ACCESS FULL                    | B_M_SYS_BRANCH        |   144 |  1008 |     3   (0)| 00:00:01 |
    |* 44 |            HASH JOIN RIGHT OUTER                |                       | 24404 |  1382K|   105   (1)| 00:00:02 |
    |  45 |             VIEW                                | M_CBS_TO_DW_ORG       |   141 |  4794 |     8   (0)| 00:00:01 |
    |  46 |              UNION-ALL                          |                       |       |       |            |          |
    |* 47 |               TABLE ACCESS FULL                 | F_PTY_ORG             |   127 |  2794 |     5   (0)| 00:00:01 |
    |* 48 |               TABLE ACCESS FULL                 | B_M_SYS_BRANCH        |    14 |    98 |     3   (0)| 00:00:01 |
    |* 49 |             TABLE ACCESS FULL                   | F_PTY_EMP_INFO        | 24404 |   571K|    97   (2)| 00:00:02 |
    -------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       3 - access("AA"."AGMT_ID"="BB"."TRAN_CARD_NO")
       4 - access("AA"."CARD_OPEN_ORG"="ORG_ID")
       7 - filter("T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2')
       8 - access("T"."PARENT_ID"=PRIOR "T"."ID")
           filter(TO_NUMBER("T"."ORG_ID")=10000)
      11 - filter(SUM("C"."ACCT_BAL")<10)
      13 - access("A"."MASTER_CARD_NO"="AGMT_ID")
      14 - access("ACCT_NO"="C"."AGMT_ID")
      16 - filter(MAX("LAST_TRANS_DATE")<TO_DATE(' 2014-03-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND 
                  SUM("ACCT_BAL") IS NOT NULL)
      18 - filter("ACCT_STATUS"<>'1' AND "END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND 
                  "START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      19 - filter(SUBSTR("ACCT_STATUS",8,1)<>'2')
      20 - filter(SUBSTR("A"."HOST_CARD_STATUS",8,1)='0' AND "A"."MASTER_CARD_NO" IS NOT NULL AND 
                  "A"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "A"."START_DT"<=TO_DATE(' 2014-03-31 
                  00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      22 - filter(MAX("XX"."TRANS_DATE")<TO_DATE(' 2014-03-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      24 - filter("TRANS_DATE"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      25 - filter("F"."END_DT"(+)>TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      26 - access("AA"."CUST_NO"="F"."PTY_ID"(+) AND "AA"."CORP_ORG"="F"."CORP_ORG"(+) AND 
                  "F"."START_DT"(+)<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
           filter("F"."START_DT"(+)<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND 
                  "AA"."CORP_ORG"="F"."CORP_ORG"(+))
      28 - access("T"."START_DT"="B"."START_DT"(+) AND "T"."SOURCE_CODE"="B"."SOURCE_CODE"(+) AND 
                  "T"."PTY_ID"="B"."PTY_ID"(+))
      29 - filter("T"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND 
                  "T"."START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      30 - access("T"."PTY_ID"="AA"."CUST_MAGR")
      31 - filter("B"."PTY_ID"(+)="AA"."CUST_MAGR" AND "B"."START_DT"(+)<=TO_DATE(' 2014-03-31 00:00:00', 
                  'syyyy-mm-dd hh24:mi:ss'))
      32 - access("FST"."SEC_ORG_ID"="ORG_ID"(+))
      33 - filter("ORG_LEVEL"(+)=2)
      34 - filter("ID"=:B1)
      36 - access("ORG_ID"(+)=NVL("SEC"."THD_ORG_ID","SEC"."ORG_ID"))
      37 - filter("ORG_LEVEL"(+)=3)
      38 - filter("ID"=:B1)
      40 - access("C"."ORG_ID"="ORG_ID"(+))
      41 - filter("ORG_LEVEL"(+)=4)
      42 - access("B"."ORG_ID"="C"."ORG_ID"(+))
      44 - access("A"."ORG_NO"="B"."PTY_ID"(+))
      47 - filter("END_DT"=TO_DATE(' 2999-12-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      48 - filter("ORG_ID" LIKE '%8888%' AND "ORG_ID" IS NOT NULL AND "ORG_ID" IS NOT NULL OR "ORG_ID" LIKE '%9999%' 
                  AND "ORG_ID" IS NOT NULL AND "ORG_ID" IS NOT NULL)
      49 - filter("A"."START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
    
    
    看到了|  27 |   VIEW PUSHED PREDICATE                         | V_M_PTY_EMP_INFO      |     3 |    87 |     4   (0)| 00:00:01 |
    
    谓词推入 而且作为NL的被驱动表 首先HASH 一把
    同时看了下表大小情况:
    SQL>  WITH t
         AS (SELECT /*+ materialize */
                   DISTINCT OBJECT_OWNER, OBJECT_NAME
               FROM (SELECT OBJECT_OWNER, OBJECT_NAME
                       FROM V$SQL_PLAN
                      WHERE SQL_ID = '2pfsvyamsk6yf' AND OBJECT_NAME IS NOT NULL
                     UNION ALL
                     SELECT OBJECT_OWNER, OBJECT_NAME
                       FROM DBA_HIST_SQL_PLAN
                      WHERE SQL_ID = '2pfsvyamsk6yf' AND OBJECT_NAME IS NOT NULL))
    SELECT a.owner,
           a.segment_name,
           a.segment_size as MB,
           TRUNC (a.segment_size / 8) block_count
      FROM (  SELECT owner, segment_name , TRUNC (SUM (bytes) / 1024/1024) segment_size
                FROM dba_segments
               WHERE   /*  segment_type LIKE 'TABLE%'
                     AND*/ (OWNER, segment_name) IN
                            (SELECT table_owner, table_name
                               FROM dba_indexes
                              WHERE (owner, index_name) IN (SELECT * FROM t)
                             UNION ALL
                             SELECT * FROM t)
            GROUP BY  (owner, segment_name)) a;  2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24  
    
    OWNER			       SEGMENT_NAME										 MB BLOCK_COUNT
    ------------------------------ --------------------------------------------------------------------------------- ---------- -----------
    DWF			       F_AGT_SAVB_ACCTINFO_H								       4121	    515
    DWF			       F_PTY_TABLE										        176	     22
    DWM			       B_M_SYS_BRANCH										  0	      0
    DWF			       F_AGT_CADB_BOOK_H								              2739	    342
    DWF			       F_AGT_CADB_BOOK_H_IDX1									152	     19
    DWF			       F_AGT_CADB_ACCT										128	     16
    DWF			       F_PTY_ORG										        0	      0
    DWF			       F_PTY_EMP_INFO										  4	      0
    DWF			       F_EVT_CADJ_JOUR									       3455	    431
    
    9 rows selected.
    
    创建如下索引;
    SELECT xx.tran_card_no, count(1) cnt, max(xx.trans_date) max_date
        FROM DWF.F_EVT_CADJ_JOUR xx
       WHERE TRANS_DATE <= to_date('2014-03-31', 'YYYY-MM-DD')
       group by xx.tran_card_no;
    
    
    
    SQL> create index F_EVT_CADJ_JOUR_IDX1 on F_EVT_CADJ_JOUR(tran_card_no,trans_date);
    
    Index created.
    
    
    select agmt_id, max(last_trans_date) last_trans_date, sum(acct_bal) acct_bal
                          from dwf.F_AGT_SAVB_ACCTINFO_H
                         where start_dt <= to_date('2014-03-31', 'YYYY-MM-DD')
                           and end_dt > to_date('2014-03-31', 'YYYY-MM-DD')
                           and acct_status <> '1'
                           group by  agmt_id
                           
    create index F_AGT_SAVB_ACCTINFO_H_idx4 on F_AGT_SAVB_ACCTINFO_H(agmt_id,last_trans_date,acct_bal,start_dt,end_dt,acct_status);
    
    同时去掉谓词推入:
    with aa as
     (select          a.agmt_id,
             sum(c.acct_bal) as card_bal, --借记卡期末存款余额
             a.card_open_org,
             a.OPEN_DATE, -- 发卡日期     
             a.CARD_NEW_STATUS, -- 卡片状态    
             a.cust_magr, -- 客户经理号 
             a.cust_no, -- 客户号
             a.corp_org
        from dwf.f_agt_cadb_book_h a
        left outer join (select agmt_id, acct_no
                          from dwf.f_agt_cadb_acct
                         where substr(acct_status, 8, 1) <> '2') b
          on a.master_card_no = b.agmt_id
      
        left outer join (select agmt_id, max(last_trans_date) last_trans_date, sum(acct_bal) acct_bal
                          from dwf.F_AGT_SAVB_ACCTINFO_H
                         where start_dt <= to_date('2014-03-31', 'YYYY-MM-DD')
                           and end_dt > to_date('2014-03-31', 'YYYY-MM-DD')
                           and acct_status <> '1'
                           group by  agmt_id
                           
                           ) c  -- 一卡多账号,某一账号睡眠其它未睡 ,卡账务信息表最后交易日期不准
          on b.acct_no = c.agmt_id
       where substr(a.host_card_status, 8, 1) = '0' --卡状态不为注销
         and a.master_card_no is not null --剔除待领卡
         and a.start_dt <= to_date('2014-03-31', 'YYYY-MM-DD') /*参数传入 季末日期*/
         and a.end_dt > to_date('2014-03-31', 'YYYY-MM-DD') /*参数传入 季末日期*/
         and c.LAST_TRANS_DATE < to_date( '2014-03-01', 'YYYY-MM-DD') /*参数传入 季末日期*/
         and c.acct_bal is not null
       group by a.agmt_id,
                a.card_open_org,
                a.OPEN_DATE, -- 发卡日期     
                a.CARD_NEW_STATUS, -- 卡片状态    
                a.cust_magr, -- 客户经理号  
                a.cust_no, -- 客户号
                a.corp_org
      having(sum(c.acct_bal) < 10)),
    bb as
     (SELECT xx.tran_card_no, count(1) cnt, max(xx.trans_date) max_date
        FROM DWF.F_EVT_CADJ_JOUR xx
       WHERE TRANS_DATE <= to_date('2014-03-31', 'YYYY-MM-DD')
       group by xx.tran_card_no)  
    select /*+  use_hash(AA XX) use_hash(AA F) */   aa.agmt_id, -- 卡号        
           'J' AS CARD_T, -- 卡种类      
           f.pty_name, -- 客户姓名    
           aa.cust_no, -- 客户证件号  
           f.mobile_no, -- 客户手机号  
           aa.OPEN_DATE, -- 发卡日期    
           null as ACTIVEDAY, -- 激活日期    
           aa.CARD_NEW_STATUS, -- 卡片状态    
           to_date('2014-03-31', 'YYYY-MM-DD') - nvl(bb.MAX_DATE, aa.OPEN_DATE) as sleep_day, -- 睡眠时间    
           card_bal, -- 存款余额    
           null as cred_limit, -- 授信额度    
           bb.cnt, -- 交易次数    
           aa.cust_magr, -- 客户经理号  
           xx.emp_name, -- 客户经理名称
           aa.card_open_org, -- 所属机构  
           bb.MAX_DATE
      from aa
      left join bb
        on aa.agmt_id = bb.tran_card_no
      LEFT JOIN dwm.v_m_pty_emp_info xx --员工表
        ON aa.cust_magr = xx.pty_id
       AND xx.start_dt <= to_date('2014-03-31', 'YYYY-MM-DD')
       AND xx.end_dt > to_date('2014-03-31', 'YYYY-MM-DD')
      LEFT JOIN dwf.f_pty_table f --当事人主表
        ON aa.cust_no = f.pty_id
       AND aa.corp_org = f.corp_org
       AND f.start_dt <= to_date('2014-03-31', 'YYYY-MM-DD')
       AND f.end_dt > to_date('2014-03-31', 'YYYY-MM-DD') 
       where   bb.MAX_DATE < to_date( '2014-03-01', 'YYYY-MM-DD')
       and aa.card_open_org in (SELECT t.Org_Id
                               FROM b_m_Sys_Branch t
                              WHERE t.Status = 1
                                AND t.Dept_Flag != '2'
                             CONNECT BY  PRIOR t.Id = t.Parent_Id
                              START WITH t.Org_Id =10000) ;
    
    Plan hash value: 2910718243
     
    ------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                       | Name                       | Rows  | Bytes | Cost (%CPU)| Time     |
    ------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                                |                            |     1 |   266 |   156K  (1)| 00:31:14 |
    |*  1 |  HASH JOIN OUTER                                |                            |     1 |   266 |   156K  (1)| 00:31:14 |
    |*  2 |   HASH JOIN                                     |                            |     1 |   206 |   150K  (1)| 00:30:01 |
    |*  3 |    HASH JOIN OUTER                              |                            |     1 |   166 |   131K  (1)| 00:26:18 |
    |*  4 |     HASH JOIN                                   |                            |     1 |   110 |   131K  (1)| 00:26:14 |
    |   5 |      VIEW                                       |                            |     1 |    83 |   131K  (1)| 00:26:14 |
    |*  6 |       FILTER                                    |                            |       |       |            |          |
    |   7 |        HASH GROUP BY                            |                            |     1 |   211 |   131K  (1)| 00:26:14 |
    |*  8 |         HASH JOIN                               |                            |    27 |  5697 |   131K  (1)| 00:26:14 |
    |*  9 |          HASH JOIN                              |                            |  1764 |   161K| 37890   (1)| 00:07:35 |
    |  10 |           VIEW                                  |                            |  1746 | 75078 | 33702   (1)| 00:06:45 |
    |* 11 |            FILTER                               |                            |       |       |            |          |
    |  12 |             HASH GROUP BY                       |                            |  1746 | 90792 | 33702   (1)| 00:06:45 |
    |* 13 |              INDEX FAST FULL SCAN               | F_AGT_SAVB_ACCTINFO_H_IDX4 |  1010K|    50M| 33677   (1)| 00:06:45 |
    |* 14 |           TABLE ACCESS FULL                     | F_AGT_CADB_ACCT            | 41918 |  2087K|  4188   (1)| 00:00:51 |
    |* 15 |          TABLE ACCESS FULL                      | F_AGT_CADB_BOOK_H          |  5278 |   603K| 93269   (1)| 00:18:40 |
    |  16 |      VIEW                                       | VW_NSO_1                   |     6 |   162 |     4  (25)| 00:00:01 |
    |  17 |       HASH UNIQUE                               |                            |     6 |   294 |     4  (25)| 00:00:01 |
    |* 18 |        FILTER                                   |                            |       |       |            |          |
    |* 19 |         CONNECT BY NO FILTERING WITH SW (UNIQUE)|                            |       |       |            |          |
    |  20 |          TABLE ACCESS FULL                      | B_M_SYS_BRANCH             |   147 |  2940 |     3   (0)| 00:00:01 |
    |  21 |     VIEW                                        | V_M_PTY_EMP_INFO           |  7356 |   402K|   275   (1)| 00:00:04 |
    |* 22 |      HASH JOIN OUTER                            |                            |  7356 |   366K|   275   (1)| 00:00:04 |
    |* 23 |       TABLE ACCESS FULL                         | F_PTY_EMP_INFO             |  7337 |   236K|   128   (1)| 00:00:02 |
    |  24 |       VIEW                                      |                            | 25885 |   455K|   148   (1)| 00:00:02 |
    |* 25 |        HASH JOIN RIGHT OUTER                    |                            | 25885 |  1491K|   148   (1)| 00:00:02 |
    |* 26 |         TABLE ACCESS FULL                       | B_M_SYS_BRANCH             |    23 |   322 |     3   (0)| 00:00:01 |
    |* 27 |         TABLE ACCESS FULL                       | B_M_SYS_BRANCH             |     1 |    11 |     3   (0)| 00:00:01 |
    |  28 |         VIEW                                    |                            | 25885 |  1137K|   145   (1)| 00:00:02 |
    |* 29 |          HASH JOIN RIGHT OUTER                  |                            | 25885 |  2173K|   145   (1)| 00:00:02 |
    |* 30 |           TABLE ACCESS FULL                     | B_M_SYS_BRANCH             |   109 |  1526 |     3   (0)| 00:00:01 |
    |* 31 |           TABLE ACCESS FULL                     | B_M_SYS_BRANCH             |     1 |    11 |     3   (0)| 00:00:01 |
    |  32 |           VIEW                                  |                            | 25885 |  1820K|   142   (1)| 00:00:02 |
    |* 33 |            HASH JOIN RIGHT OUTER                |                            | 25885 |  1996K|   142   (1)| 00:00:02 |
    |* 34 |             TABLE ACCESS FULL                   | B_M_SYS_BRANCH             |    12 |   168 |     3   (0)| 00:00:01 |
    |* 35 |             HASH JOIN RIGHT OUTER               |                            | 25885 |  1643K|   138   (0)| 00:00:02 |
    |  36 |              TABLE ACCESS FULL                  | B_M_SYS_BRANCH             |   147 |  1029 |     3   (0)| 00:00:01 |
    |* 37 |              HASH JOIN RIGHT OUTER              |                            | 25885 |  1466K|   135   (0)| 00:00:02 |
    |  38 |               VIEW                              | M_CBS_TO_DW_ORG            |   143 |  4862 |     8   (0)| 00:00:01 |
    |  39 |                UNION-ALL                        |                            |       |       |            |          |
    |* 40 |                 TABLE ACCESS FULL               | F_PTY_ORG                  |   129 |  2838 |     5   (0)| 00:00:01 |
    |* 41 |                 TABLE ACCESS FULL               | B_M_SYS_BRANCH             |    14 |    98 |     3   (0)| 00:00:01 |
    |* 42 |               TABLE ACCESS FULL                 | F_PTY_EMP_INFO             | 25885 |   606K|   127   (0)| 00:00:02 |
    |  43 |    VIEW                                         |                            | 14370 |   561K| 18634   (3)| 00:03:44 |
    |* 44 |     FILTER                                      |                            |       |       |            |          |
    |  45 |      HASH GROUP BY                              |                            | 14370 |   364K| 18634   (3)| 00:03:44 |
    |* 46 |       INDEX FAST FULL SCAN                      | F_EVT_CADJ_JOUR_IDX1       |    13M|   328M| 18250   (1)| 00:03:40 |
    |* 47 |   TABLE ACCESS FULL                             | F_PTY_TABLE                |   589K|    33M|  6033   (1)| 00:01:13 |
    ------------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - access("AA"."CORP_ORG"="F"."CORP_ORG"(+) AND "AA"."CUST_NO"="F"."PTY_ID"(+))
       2 - access("AA"."AGMT_ID"="BB"."TRAN_CARD_NO")
       3 - access("AA"."CUST_MAGR"="XX"."PTY_ID"(+))
       4 - access("AA"."CARD_OPEN_ORG"="ORG_ID")
       6 - filter(SUM("C"."ACCT_BAL")<10)
       8 - access("A"."MASTER_CARD_NO"="AGMT_ID")
       9 - access("ACCT_NO"="C"."AGMT_ID")
      11 - filter(MAX("LAST_TRANS_DATE")<TO_DATE(' 2014-03-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND SUM("ACCT_BAL") IS 
                  NOT NULL)
      13 - filter("END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "ACCT_STATUS"<>'1' AND 
                  "START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      14 - filter(SUBSTR("ACCT_STATUS",8,1)<>'2')
      15 - filter("A"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND 
                  SUBSTR("A"."HOST_CARD_STATUS",8,1)='0' AND "A"."MASTER_CARD_NO" IS NOT NULL AND "A"."START_DT"<=TO_DATE(' 2014-03-31 
                  00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      18 - filter("T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2')
      19 - access("T"."PARENT_ID"=PRIOR "T"."ID")
           filter(TO_NUMBER("T"."ORG_ID")=10000)
      22 - access("T"."START_DT"="B"."START_DT"(+) AND "T"."SOURCE_CODE"="B"."SOURCE_CODE"(+) AND 
                  "T"."PTY_ID"="B"."PTY_ID"(+))
      23 - filter("T"."END_DT">TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "T"."START_DT"<=TO_DATE(' 
                  2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      25 - access("FST"."SEC_ORG_ID"="ORG_ID"(+))
      26 - filter("ORG_LEVEL"(+)=2)
      27 - filter("ID"=:B1)
      29 - access("ORG_ID"(+)=NVL("SEC"."THD_ORG_ID","SEC"."ORG_ID"))
      30 - filter("ORG_LEVEL"(+)=3)
      31 - filter("ID"=:B1)
      33 - access("C"."ORG_ID"="ORG_ID"(+))
      34 - filter("ORG_LEVEL"(+)=4)
      35 - access("B"."ORG_ID"="C"."ORG_ID"(+))
      37 - access("A"."ORG_NO"="B"."PTY_ID"(+))
      40 - filter("END_DT"=TO_DATE(' 2999-12-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      41 - filter("ORG_ID" LIKE '%8888%' AND "ORG_ID" IS NOT NULL AND "ORG_ID" IS NOT NULL OR "ORG_ID" LIKE '%9999%' AND 
                  "ORG_ID" IS NOT NULL AND "ORG_ID" IS NOT NULL)
      42 - filter("A"."START_DT"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      44 - filter(MAX("XX"."TRANS_DATE")<TO_DATE(' 2014-03-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      46 - filter("TRANS_DATE"<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
      47 - filter("F"."END_DT"(+)>TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND 
                  "F"."START_DT"(+)<=TO_DATE(' 2014-03-31 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
    
    最终SQL16S左右就出结果

  • 相关阅读:
    如何通过命令行窗口查看sqlite数据库文件
    eclipse自动补全的设置
    文本装饰
    注释和特殊符号
    文本装饰
    网页背景
    通过ArcGIS Server admin 查看和删除已注册的 Web Adaptor
    通过 ArcGIS Server Manager 查看已安装的 Web Adaptor
    通过 ArcGIS Server Manager 验证 DataStore
    Windows上安装ArcGIS Enterprise——以 Windows Server 2012 R2上安装 ArcGIS 10.8为例
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352325.html
Copyright © 2011-2022 走看看