• FILTER 索引扫描多次


    explain plan for SELECT tcnt,
           rn,
           CustomerID,
           CustomerName,
           CustomerType,
           CertType,
           CertID,
           MFCustomerID,
           MCCustomerID,
           ManageOrgName,
           ManageUserName,
           ManageUserID,
           Private,
           Isresure,
           Balance
      FROM (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 II.CustomerID
                              FROM IND_INFO II
                             WHERE II.UpdateDate = '2019/10/23'
                               AND II.UpdateUserID = '991735'
                               AND O.CustomerID = II.CustomerID
                            UNION
                            SELECT EI.CustomerID
                              FROM ENT_INFO EI
                             WHERE EI.UpdateDate = '2019/10/23'
                               AND EI.UpdateUserID = '991735'
                               AND O.CustomerID = EI.CustomerID))
               AND NVL(O.belongCorporaTion, '9999') = '9999')
     WHERE rn BETWEEN 1 AND 10;
    select * from table(dbms_xplan.display());
    
    PLAN_TABLE_OUTPUT
    Plan hash value: 2649621158
     
    ---------------------------------------------------------------------------------------------------
    | Id  | Operation                         | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                  |               |     1 |  6238 |    28M (25)| 00:18:19 |
    |*  1 |  VIEW                             |               |     1 |  6238 |    28M (25)| 00:18:19 |
    |   2 |   WINDOW BUFFER                   |               |     1 |    84 |    28M (25)| 00:18:19 |
    |   3 |    COUNT                          |               |       |       |            |          |
    |*  4 |     FILTER                        |               |       |       |            |          |
    |*  5 |      TABLE ACCESS FULL            | CUSTOMER_INFO |  3518K|   281M| 18056   (1)| 00:00:01 |
    |   6 |      SORT UNIQUE                  |               |     2 |   120 |     8  (25)| 00:00:01 |
    |   7 |       UNION-ALL                   |               |       |       |            |          |
    |*  8 |        TABLE ACCESS BY INDEX ROWID| IND_INFO      |     1 |    29 |     3   (0)| 00:00:01 |
    |*  9 |         INDEX UNIQUE SCAN         | PK_IND_INFO   |     1 |       |     2   (0)| 00:00:01 |
    |* 10 |        TABLE ACCESS BY INDEX ROWID| ENT_INFO      |     1 |    31 |     3   (0)| 00:00:01 |
    |* 11 |         INDEX UNIQUE SCAN         | PK_ENT_INFO   |     1 |       |     2   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("RN">=1 AND "RN"<=10)
       4 - filter( EXISTS ( (SELECT "II"."CUSTOMERID" FROM "IND_INFO" "II" WHERE 
                  "II"."CUSTOMERID"=:B1 AND "II"."UPDATEUSERID"='991735' AND 
                  "II"."UPDATEDATE"='2019/10/23')UNION (SELECT "EI"."CUSTOMERID" FROM "ENT_INFO" "EI" WHERE 
                  "EI"."CUSTOMERID"=:B2 AND "EI"."UPDATEUSERID"='991735' AND 
                  "EI"."UPDATEDATE"='2019/10/23')))
       5 - filter(NVL("O"."BELONGCORPORATION",'9999')='9999')
       8 - filter("II"."UPDATEUSERID"='991735' AND "II"."UPDATEDATE"='2019/10/23')
       9 - access("II"."CUSTOMERID"=:B1)
      10 - filter("EI"."UPDATEUSERID"='991735' AND "EI"."UPDATEDATE"='2019/10/23')
      11 - access("EI"."CUSTOMERID"=:B1)
    
      
      
    SQL> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    SQL_ID	f4zvxt88gr994, child number 0
    -------------------------------------
    SELECT tcnt,	    rn,        CustomerID,	  CustomerName,
    CustomerType,	     CertType,	      CertID,	     MFCustomerID,
      MCCustomerID,        ManageOrgName,	     ManageUserName,
    ManageUserID,	     Private,	     Isresure,	      Balance	FROM
    (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
    II.CustomerID				FROM IND_INFO II
    
    Plan hash value: 2649621158
    
    -------------------------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation			  | Name	  | Starts | E-Rows | A-Rows |	 A-Time   | Buffers | Reads  |	OMem |	1Mem | Used-Mem |
    -------------------------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT		  |		  |	 1 |	    |	  10 |00:01:01.57 |	 20M|  18924 |	     |	     |		|
    |*  1 |  VIEW				  |		  |	 1 |	  1 |	  10 |00:01:01.57 |	 20M|  18924 |	     |	     |		|
    |   2 |   WINDOW BUFFER 		  |		  |	 1 |	  1 |	  18 |00:01:01.50 |	 20M|  18895 |	4096 |	4096 | 4096  (0)|
    |   3 |    COUNT			  |		  |	 1 |	    |	  18 |00:01:01.50 |	 20M|  18895 |	     |	     |		|
    |*  4 |     FILTER			  |		  |	 1 |	    |	  18 |00:01:01.50 |	 20M|  18895 |	     |	     |		|
    |*  5 |      TABLE ACCESS FULL		  | CUSTOMER_INFO |	 1 |   3518K|	3574K|00:00:02.39 |   66444 |	   0 |	     |	     |		|
    |   6 |      SORT UNIQUE		  |		  |   3574K|	  2 |	  18 |00:00:56.23 |	 20M|  18895 |	2048 |	2048 |		|
    |   7 |       UNION-ALL 		  |		  |   3574K|	    |	  18 |00:00:52.23 |	 20M|  18895 |	     |	     |		|
    |*  8 |        TABLE ACCESS BY INDEX ROWID| IND_INFO	  |   3574K|	  1 |	  17 |00:00:35.99 |	 13M|  18895 |	     |	     |		|
    |*  9 | 	INDEX UNIQUE SCAN	  | PK_IND_INFO   |   3574K|	  1 |	3267K|00:00:13.16 |	 10M|	   1 |	     |	     |		|
    |* 10 |        TABLE ACCESS BY INDEX ROWID| ENT_INFO	  |   3574K|	  1 |	   1 |00:00:08.47 |    6750K|	   0 |	     |	     |		|
    |* 11 | 	INDEX UNIQUE SCAN	  | PK_ENT_INFO   |   3574K|	  1 |	 307K|00:00:05.71 |    6441K|	   0 |	     |	     |		|
    -------------------------------------------------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       1 - filter(("RN">=1 AND "RN"<=10))
       4 - filter( IS NOT NULL)
       5 - filter(NVL("O"."BELONGCORPORATION",'9999')='9999')
       8 - filter(("II"."UPDATEUSERID"='991735' AND "II"."UPDATEDATE"='2019/10/23'))
       9 - access("II"."CUSTOMERID"=:B1)
      10 - filter(("EI"."UPDATEUSERID"='991735' AND "EI"."UPDATEDATE"='2019/10/23'))
      11 - access("EI"."CUSTOMERID"=:B1)
    
    
    48 rows selected.
    
    
    
  • 相关阅读:
    UMeng SDK(友盟) 之 用户反馈
    CCSprite 实现书本翻页效果(quick cocos 2dx)
    quick-cocos2d-x 调用友盟(UMeng)的社区分享(Android平台)
    为精灵添加一些特殊的移动缩放动作,特效
    判断是否点击到了精灵(Sprite)
    quick-cocos-2dx学习之【scheduler.lua】
    quick-cocos-2dx学习之【init.lua】
    C/C++的头文件何处安身的问题
    Tomcat性能优化
    Tomcat基本原理
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348672.html
Copyright © 2020-2023  润新知