zoukankan      html  css  js  c++  java
  • FILTER 优化

     PLAN_TABLE_OUTPUT
    Plan hash value: 2272901224
     
    ------------------------------------------------------------------------------------------------
    | Id  | Operation            | Name                    | Rows  | Bytes | Cost (%CPU)| Time     |
    ------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT     |                         |   708 | 30444 |  1521   (2)| 00:00:01 |
    |*  1 |  FILTER              |                         |       |       |            |          |
    |   2 |   VIEW               |                         | 14159 |   594K|  1519   (2)| 00:00:01 |
    |   3 |    SORT UNIQUE       |                         | 14159 |   746K|  1519   (2)| 00:00:01 |
    |*  4 |     TABLE ACCESS FULL| BTOP_TELLER_TELLERLOGIN | 14159 |   746K|  1517   (1)| 00:00:01 |
    |*  5 |   TABLE ACCESS FULL  | BTOP_TELLER_TELLERLOGIN |     2 |    74 |     2   (0)| 00:00:01 |
    ------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter( NOT EXISTS (SELECT 0 FROM "BTOP_TELLER_TELLERLOGIN" "A" WHERE 
                  TO_DATE("A"."LOGONTIME",'yyyy-mm-dd HH24:MI:SS')>TO_DATE(' 2017-12-08 00:00:00', 
                  'syyyy-mm-dd hh24:mi:ss') AND LNNVL(REPLACE("A"."CLIENTIP",SUBSTR("A"."CLIENTIP",INSTR("
                  A"."CLIENTIP",':')))<>:B1)))
       4 - filter(TO_DATE("A"."LOGONTIME",'yyyy-mm-dd HH24:MI:SS')<TO_DATE(' 2017-12-08 
                  00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
       5 - filter(TO_DATE("A"."LOGONTIME",'yyyy-mm-dd HH24:MI:SS')>TO_DATE(' 2017-12-08 
                  00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND LNNVL(REPLACE("A"."CLIENTIP",SUBSTR("A"."CLIENT
                  IP",INSTR("A"."CLIENTIP",':')))<>:B1))
    
                  
                  
                  explain plan for select *
      from (select distinct (replace(a.clientip,
                                     substr(a.clientip, instr(a.clientip, ':')))) as ip,
                            a.orgid,
                            a.tellerid
              from btop_teller_tellerlogin a
             where to_date(a.logontime, 'yyyy-mm-dd HH24:MI:SS') <
                   to_date('2017-12-08', 'yyyy-mm-dd')) c
     where c.ip not in
           (select distinct (replace(a.clientip,
                                     substr(a.clientip, instr(a.clientip, ':'))))
              from btop_teller_tellerlogin a
             where to_date(a.logontime, 'yyyy-mm-dd HH24:MI:SS') >
                   to_date('2017-12-08', 'yyyy-mm-dd'));
                   
                   
                   
                   select count(*) from (select distinct (replace(a.clientip,
                                     substr(a.clientip, instr(a.clientip, ':')))) as ip,
                            a.orgid,
                            a.tellerid
              from btop_teller_tellerlogin a
             where to_date(a.logontime, 'yyyy-mm-dd HH24:MI:SS') <
                   to_date('2017-12-08', 'yyyy-mm-dd'))
                   
                   --9088
                   
                   create index btop_teller_tellerlogin_idx1 on btop_teller_tellerlogin(to_date(logontime, 'yyyy-mm-dd HH24:MI:SS')) online;
                   
                   
                   
    Plan hash value: 2733609535
    
    ------------------------------------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                              | Name                         | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
    ------------------------------------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                       |                              |      1 |        |   2700 |00:00:08.65 |    2415K|       |       |          |
    |*  1 |  FILTER                                |                              |      1 |        |   2700 |00:00:08.65 |    2415K|       |       |          |
    |   2 |   VIEW                                 |                              |      1 |  14159 |   9088 |00:00:01.52 |     255K|       |       |          |
    |   3 |    SORT UNIQUE                         |                              |      1 |  14159 |   9088 |00:00:01.52 |     255K|   761K|   761K|  676K (0)|
    |   4 |     TABLE ACCESS BY INDEX ROWID BATCHED| BTOP_TELLER_TELLERLOGIN      |      1 |  14159 |    296K|00:00:00.72 |     255K|       |       |          |
    |*  5 |      INDEX RANGE SCAN                  | BTOP_TELLER_TELLERLOGIN_IDX1 |      1 |   2692 |    296K|00:00:00.11 |     789 |       |       |          |
    |*  6 |   TABLE ACCESS BY INDEX ROWID BATCHED  | BTOP_TELLER_TELLERLOGIN      |   1636 |      2 |   1011 |00:00:07.12 |    2160K|       |       |          |
    |*  7 |    INDEX RANGE SCAN                    | BTOP_TELLER_TELLERLOGIN_IDX1 |   1636 |        |   2798K|00:00:00.83 |    8150 |       |       |          |
    ------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       1 - filter( IS NULL)
       5 - access("A"."SYS_NC00010$"<TO_DATE(' 2017-12-08 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
       6 - filter(LNNVL(REPLACE("A"."CLIENTIP",SUBSTR("A"."CLIENTIP",INSTR("A"."CLIENTIP",':')))<>:B1))
       7 - access("A"."SYS_NC00010$">TO_DATE(' 2017-12-08 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
    
    
    37 rows selected.
    
    
    SQL> select segment_name,bytes/1024/1024 from dba_segments a where a.segment_name=upper('BTOP_TELLER_TELLERLOGIN');
    
    SEGMENT_NAME
    --------------------------------------------------------------------------------
    BYTES/1024/1024
    ---------------
    BTOP_TELLER_TELLERLOGIN
                 52
                 
    本来需要访问的数据为 1636*52M=83G
    
    

  • 相关阅读:
    关于VBA的Exit For到底是怎样跳出for循环的小例子
    关于VBA的Exit For到底是怎样跳出for循环的小例子
    C#-Task.Run 和 Task.Factory.StartNew 区别
    java数组使用 四 反转数组元素
    java数组使用 三 循环数组元素
    java数组使用 二 数组的三种初始化
    java数组使用 一
    java方法 使用 四 可变参数
    java方法 使用 三 求阶乘
    java方法 使用 二 查找最大值
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349414.html
Copyright © 2011-2022 走看看