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

    
    select count(1) over() as tcnt,
           rownum as rn,
           O.CustomerID,
           O.CustomerName,
           O.CustomerType,
           O.CertType,
           O.CertID,
           O.MFCustomerID,
           O.MCCustomerID,
           getManageUserID(O.CustomerID) as ManageUserID,
           getManageOrgName(O.CustomerID) as ManageOrgName,
           getManageUserName(O.CustomerID) as ManageUserName,
           O.Private,
           O.Isresure,
           getcustomerbalance3(O.CustomerID) as Balance
      from customer_info O
    where 1 = 1
       and (exists (Select 'X'
                      From IND_INFO II
                     Where O.CustomerID = II. CustomerID
                       and II.UpdateDate = '2019/06/26'
                       and II.UpdateUserID = '017634') or exists
            (Select 'X'
               From ENT_INFO EI
              Where O.CustomerID = EI.CustomerID
                and EI.UpdateDate = '2019/06/26'
                and EI.UpdateUserID = '017634'))
       and nvl(O.belongCorporaTion, '9999') = '9999'
       and (EXISTS (Select 'X'
                      from CUSTOMER_BELONG CB
                     where CB.CustomerID = O.CUSTOMERID
                       and CB.USERID = '017634'
                       and CB.BELONGATTRIBUTE = '1') or Exists
            (select 'X'
               from BUSINESSRIGHT_APPLY ba
              where ba.CustomerID = O.CustomerID
                and ba.UserID = '017634'
                and ba.ApplyStatus = '020'))
       and EXISTS
    (Select 'X'
              from CUSTOMER_PREEVALUATE CP1
             where CP1.serialno = (select max(CP.serialno)
                                     from CUSTOMER_PREEVALUATE CP
                                    where CP.INPUTUSERID = '017634'
                                      and CP.CustomerId = O.CustomerId
                                      and CP.Serialno like '2%')
               and CP1.ApplyResult in ('1010', '1020', '1030', '3010')
               and CP1.InputDate >=
                   to_char(add_months(sysdate, -1), 'yyyy/mm/dd'));
    
    
    TLXD@xdxtdb> TLXD@xdxtdb> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    SQL_ID 22rnph35yxqtg, child number 0
    -------------------------------------
    select count(1) over() as tcnt,        rownum as rn,
    O.CustomerID,      O.CustomerName,     O.CustomerType,
    O.CertType,    O.CertID,     O.MFCustomerID,
    O.MCCustomerID,        getManageUserID(O.CustomerID) as ManageUserID,
         getManageOrgName(O.CustomerID) as ManageOrgName,
    getManageUserName(O.CustomerID) as ManageUserName,   O.Private,
        O.Isresure,        getcustomerbalance3(O.CustomerID) as Balance
    from customer_info O  where 1 = 1    and (exists (Select 'X'
           From IND_INFO II   Where O.CustomerID = II.
    CustomerID       and II.UpdateDate = '2019/06/26'
       and II.UpdateUserID = '017634') or exists     (Select 'X'
        From ENT_INFO EI       Where O.CustomerID =
    EI.CustomerID   and EI.UpdateDate = '2019/06/26'
    and EI.UpdateUserID = '017634'))    and nvl(O.belongCorporaTion,
    '9999') = '9999'    and (EXISTS (Select 'X'
    
    Plan hash value: 3456449175
    
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation   | Name       | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |  OMem |  1Mem | Used-Mem |
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT   |       |      1 | |      2 |00:01:11.80 |    9608K|    138K|  |  |     |
    |   1 |  WINDOW BUFFER   |       |      1 |      1 |      2 |00:01:11.80 |    9608K|    138K|  2048 |  2048 | 2048  (0)|
    |   2 |   COUNT    |       |      1 | |      2 |00:01:11.80 |    9608K|    138K|  |  |     |
    |*  3 |    FILTER   |       |      1 | |      2 |00:01:11.80 |    9608K|    138K|  |  |     |
    |*  4 |     TABLE ACCESS FULL   | CUSTOMER_INFO       |      1 |   3297K|   3298K|00:00:07.04 |   96769 |  36696 |  |  |     |
    |*  5 |     TABLE ACCESS BY INDEX ROWID    | CUSTOMER_PREEVALUATE      |   3298K|      1 |     28 |00:01:02.54 |    9511K|    101K|  |  |     |
    |*  6 |      INDEX UNIQUE SCAN   | SYS_C0039976       |   3298K|      1 |     29 |00:01:00.91 |    9511K|    101K|  |  |     |
    |   7 |       SORT AGGREGATE   |       |   3298K|      1 |   3298K|00:00:58.13 |    9511K|    101K|  |  |     |
    |*  8 |        TABLE ACCESS BY INDEX ROWID BATCHED| CUSTOMER_PREEVALUATE      |   3298K|      1 |     30 |00:00:55.58 |    9511K|    101K|  |  |     |
    |*  9 |  INDEX RANGE SCAN   | IDX1_CUSTOMER_PREEVALUATE |   3298K|      2 |   3129K|00:00:17.88 |    6394K|  10062 |  |  |     |
    |* 10 |     TABLE ACCESS BY INDEX ROWID    | IND_INFO       |     28 |      1 |      2 |00:00:00.01 |     186 |      8 |  |  |     |
    |* 11 |      INDEX UNIQUE SCAN   | PK_IND_INFO        |     28 |      1 |     27 |00:00:00.01 |     125 |      6 |  |  |     |
    |* 12 |     TABLE ACCESS BY INDEX ROWID    | ENT_INFO       |     26 |      1 |      0 |00:00:00.01 |      54 |      3 |  |  |     |
    |* 13 |      INDEX UNIQUE SCAN   | PK_ENT_INFO        |     26 |      1 |      1 |00:00:00.01 |      52 |      2 |  |  |     |
    |* 14 |     TABLE ACCESS BY INDEX ROWID BATCHED   | CUSTOMER_BELONG       |      2 |      1 |      2 |00:00:00.01 |      31 |      1 |  |  |     |
    |* 15 |      INDEX RANGE SCAN   | PK_CUSTOMER_BELONG       |      2 |      1 |      2 |00:00:00.01 |      27 |      1 |  |  |     |
    |* 16 |     TABLE ACCESS FULL   | BUSINESSRIGHT_APPLY       |      0 |      1 |      0 |00:00:00.01 |       0 |      0 |  |  |     |
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       3 - filter(( IS NOT NULL AND ( IS NOT NULL OR  IS NOT NULL) AND ( IS NOT NULL OR  IS NOT NULL)))
       4 - filter(NVL("O"."BELONGCORPORATION",'9999')='9999')
       5 - filter(("CP1"."INPUTDATE">=TO_CHAR(ADD_MONTHS(SYSDATE@!,-1),'yyyy/mm/dd') AND INTERNAL_FUNCTION("CP1"."APPLYRESULT")))
       6 - access("CP1"."SERIALNO"=)
       8 - filter(("CP"."INPUTUSERID"='017634' AND "CP"."SERIALNO" LIKE '2%'))
       9 - access("CP"."CUSTOMERID"=:B1)
      10 - filter(("II"."UPDATEUSERID"='017634' AND "II"."UPDATEDATE"='2019/06/26'))
      11 - access("II"."CUSTOMERID"=:B1)
      12 - filter(("EI"."UPDATEUSERID"='017634' AND "EI"."UPDATEDATE"='2019/06/26'))
      13 - access("EI"."CUSTOMERID"=:B1)
      14 - filter("CB"."BELONGATTRIBUTE"='1')
      15 - access("CB"."CUSTOMERID"=:B1 AND "CB"."USERID"='017634')
           filter("CB"."USERID"='017634')
      16 - filter(("BA"."CUSTOMERID"=:B1 AND "BA"."USERID"='017634' AND "BA"."APPLYSTATUS"='020'))
    
  • 相关阅读:
    PHP中防止SQL注入的方法
    SQLmap超详细文档和实例演示
    Spring Cloud 个人心得 理论
    Spring注解说明
    git各角色权限描述
    jenkins调用tomcat重启命令 && tomcat重启脚本
    nginx1.5 升级到1.14
    发布项目
    spring boot 多线程
    Jmeter测试http请求
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348735.html
Copyright © 2011-2022 走看看