zoukankan      html  css  js  c++  java
  • ORACLE 查看有多个执行计划的SQL语句

    在SQL优化过程,有时候需要查看哪些SQL具有多个执行计划(Multiple Executions Plans for the same SQL statement),因为同一个SQL有多个执行计划一般意味着代码有问题或某些其它原因,例如,SQL语句使用绑定变量,但是绑定变量的类型或长度可能不一致会导致同一SQL出现不同执行计划。
     

    一、SQL多版本导致的问题

    1、某生产数据库CPU使用突然100%,登录数据库查看,发现,都是某条查询的SQL在运行,latch free等等待事件。不得已,先记录下SQL_ID,再Kill 掉这些session。
    select 'alter system kill session '||''''||s.SID||','||s.SERIAL#||''''||';',s.SID,s.blocking_session,s.MACHINE,s.OSUSER,s.PROGRAM,
           s.USERNAME,s.last_call_et,a.SQL_ID,s.LOGON_TIME,a.SQL_TEXT,a.SQL_FULLTEXT,
            w.EVENT,a.DISK_READS,a.BUFFER_GETS
    from v$process p,v$session s,v$sqlarea a,v$session_wait w
    where p.ADDR = s.PADDR and s.SQL_ID = a.sql_id and s.sid = w.SID
    and s.STATUS = 'ACTIVE' and s.PROGRAM !='plsqldev.exe' and s.OSUSER !='oracle'
    --and a.SQL_TEXT like 'select%'
    order by s.last_call_et desc;

    2、记录下的SQL_ID,并查看SQL版本

    select sql_id,plan_hash_value,child_number from v$sql  where sql_id='an8watgthzfgj';

    3、产看自执行计划的详细执行过程

    1)查询SQL所有执行计划
    SELECT * FROM TABLE(SYS.DBMS_XPLAN.DISPLAY_CURSOR('an8watgthzfgj',null))
    2)查询SQL的CHILD NUMBER为0的执行计划
    SELECT * FROM TABLE(SYS.DBMS_XPLAN.DISPLAY_CURSOR('an8watgthzfgj',0))
    3)查询SQL的CHILD NUMBER为1的执行计划
    SELECT * FROM TABLE(SYS.DBMS_XPLAN.DISPLAY_CURSOR('an8watgthzfgj',1))

    SQL_ID  an8watgthzfgj, child number 0
    -------------------------------------
     
    Plan hash value: 3102792867
     
    ----------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                 | Name                 | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    ----------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                          |                      |       |       |     5 (100)|          |       |       |
    |*  1 |  VIEW                                     |                      |     1 |  5032 |     5  (20)| 00:00:01 |       |       |
    |*  2 |   COUNT STOPKEY                           |                      |       |       |            |          |       |       |
    |   3 |    VIEW                                   |                      |     1 |  5019 |     5  (20)| 00:00:01 |       |       |
    |*  4 |     SORT ORDER BY STOPKEY                 |                      |     1 |  1090 |     5  (20)| 00:00:01 |       |       |
    |*  5 |      FILTER                               |                      |       |       |            |          |       |       |
    |   6 |       NESTED LOOPS                        |                      |     1 |  1090 |     4   (0)| 00:00:01 |       |       |
    |   7 |        NESTED LOOPS                       |                      |     1 |  1090 |     4   (0)| 00:00:01 |       |       |
    |   8 |         PARTITION RANGE ITERATOR          |                      |     1 |   339 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |*  9 |          TABLE ACCESS BY LOCAL INDEX ROWID| GWORDERS             |     1 |   339 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |* 10 |           INDEX RANGE SCAN                | INDX_GWO_ORDERNUM    |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |  11 |         PARTITION RANGE ITERATOR          |                      |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 12 |          INDEX RANGE SCAN                 | INDX_GWT_GWORDERS_ID |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 13 |        TABLE ACCESS BY LOCAL INDEX ROWID  | GWTRXS               |     1 |   751 |     2   (0)| 00:00:01 |     1 |     1 |
    ----------------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("N">:8)
       2 - filter(ROWNUM<=:6+:7)
       4 - filter(ROWNUM<=:6+:7)
       5 - filter((TO_DATE(:5,'yyyy-mm-dd')+1>TO_DATE(:3,'yyyy-mm-dd') AND
                  TO_DATE(:4,'yyyy-mm-dd')+1>TO_DATE(:2,'yyyy-mm-dd')))
       9 - filter(("O"."CREATEDATE">=TO_DATE(:3,'yyyy-mm-dd') AND "O"."CREATEDATE"<TO_DATE(:5,'yyyy-mm-dd')+1))
      10 - access("O"."ORDERNUM"=:1)
      12 - access("G"."GWORDERS_ID"="O"."ID")
      13 - filter(("G"."CREATEDATE">=TO_DATE(:2,'yyyy-mm-dd') AND "G"."CREATEDATE"<TO_DATE(:4,'yyyy-mm-dd')+1))
     
    SQL_ID  an8watgthzfgj, child number 1
    -------------------------------------
    Plan hash value: 3102792867
     
    ----------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                 | Name                 | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    ----------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                          |                      |       |       |     5 (100)|          |       |       |
    |*  1 |  VIEW                                     |                      |     1 |  5032 |     5  (20)| 00:00:01 |       |       |
    |*  2 |   COUNT STOPKEY                           |                      |       |       |            |          |       |       |
    |   3 |    VIEW                                   |                      |     1 |  5019 |     5  (20)| 00:00:01 |       |       |
    |*  4 |     SORT ORDER BY STOPKEY                 |                      |     1 |  1097 |     5  (20)| 00:00:01 |       |       |
    |*  5 |      FILTER                               |                      |       |       |            |          |       |       |
    |   6 |       NESTED LOOPS                        |                      |     1 |  1097 |     4   (0)| 00:00:01 |       |       |
    |   7 |        NESTED LOOPS                       |                      |     1 |  1097 |     4   (0)| 00:00:01 |       |       |
    |   8 |         PARTITION RANGE ITERATOR          |                      |     1 |   338 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |*  9 |          TABLE ACCESS BY LOCAL INDEX ROWID| GWORDERS             |     1 |   338 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |* 10 |           INDEX RANGE SCAN                | INDX_GWO_ORDERNUM    |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |  11 |         PARTITION RANGE ITERATOR          |                      |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 12 |          INDEX RANGE SCAN                 | INDX_GWT_GWORDERS_ID |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 13 |        TABLE ACCESS BY LOCAL INDEX ROWID  | GWTRXS               |     1 |   759 |     2   (0)| 00:00:01 |     1 |     1 |
    ----------------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("N">:8)
       2 - filter(ROWNUM<=:6+:7)
       4 - filter(ROWNUM<=:6+:7)
       5 - filter((TO_DATE(:5,'yyyy-mm-dd')+1>TO_DATE(:3,'yyyy-mm-dd') AND
                  TO_DATE(:4,'yyyy-mm-dd')+1>TO_DATE(:2,'yyyy-mm-dd')))
       9 - filter(("O"."CREATEDATE">=TO_DATE(:3,'yyyy-mm-dd') AND "O"."CREATEDATE"<TO_DATE(:5,'yyyy-mm-dd')+1))
      10 - access("O"."ORDERNUM"=:1)
      12 - access("G"."GWORDERS_ID"="O"."ID")
      13 - filter(("G"."CREATEDATE">=TO_DATE(:2,'yyyy-mm-dd') AND "G"."CREATEDATE"<TO_DATE(:4,'yyyy-mm-dd')+1))
     
    SQL_ID  an8watgthzfgj, child number 2
    -------------------------------------
    Plan hash value: 3102792867
     
    ----------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                 | Name                 | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    ----------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                          |                      |       |       |     5 (100)|          |       |       |
    |*  1 |  VIEW                                     |                      |     1 |  5032 |     5  (20)| 00:00:01 |       |       |
    |*  2 |   COUNT STOPKEY                           |                      |       |       |            |          |       |       |
    |   3 |    VIEW                                   |                      |     1 |  5019 |     5  (20)| 00:00:01 |       |       |
    |*  4 |     SORT ORDER BY STOPKEY                 |                      |     1 |  1070 |     5  (20)| 00:00:01 |       |       |
    |*  5 |      FILTER                               |                      |       |       |            |          |       |       |
    |   6 |       NESTED LOOPS                        |                      |     1 |  1070 |     4   (0)| 00:00:01 |       |       |
    |   7 |        NESTED LOOPS                       |                      |     1 |  1070 |     4   (0)| 00:00:01 |       |       |
    |   8 |         PARTITION RANGE ITERATOR          |                      |     1 |   339 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |*  9 |          TABLE ACCESS BY LOCAL INDEX ROWID| GWORDERS             |     1 |   339 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |* 10 |           INDEX RANGE SCAN                | INDX_GWO_ORDERNUM    |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |  11 |         PARTITION RANGE ITERATOR          |                      |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 12 |          INDEX RANGE SCAN                 | INDX_GWT_GWORDERS_ID |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 13 |        TABLE ACCESS BY LOCAL INDEX ROWID  | GWTRXS               |     1 |   731 |     2   (0)| 00:00:01 |     1 |     1 |
    ----------------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("N">:8)
       2 - filter(ROWNUM<=:6+:7)
       4 - filter(ROWNUM<=:6+:7)
       5 - filter((TO_DATE(:5,'yyyy-mm-dd')+1>TO_DATE(:3,'yyyy-mm-dd') AND
                  TO_DATE(:4,'yyyy-mm-dd')+1>TO_DATE(:2,'yyyy-mm-dd')))
       9 - filter(("O"."CREATEDATE">=TO_DATE(:3,'yyyy-mm-dd') AND "O"."CREATEDATE"<TO_DATE(:5,'yyyy-mm-dd')+1))
      10 - access("O"."ORDERNUM"=:1)
      12 - access("G"."GWORDERS_ID"="O"."ID")
      13 - filter(("G"."CREATEDATE">=TO_DATE(:2,'yyyy-mm-dd') AND "G"."CREATEDATE"<TO_DATE(:4,'yyyy-mm-dd')+1))
     
    SQL_ID  an8watgthzfgj, child number 3
    -------------------------------------
    Plan hash value: 3102792867
     
    ----------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                 | Name                 | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    ----------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                          |                      |       |       |   530 (100)|          |       |       |
    |*  1 |  VIEW                                     |                      |     1 |  5032 |   530   (1)| 00:00:07 |       |       |
    |*  2 |   COUNT STOPKEY                           |                      |       |       |            |          |       |       |
    |   3 |    VIEW                                   |                      |     1 |  5019 |   530   (1)| 00:00:07 |       |       |
    |*  4 |     SORT ORDER BY STOPKEY                 |                      |     1 |   915 |   530   (1)| 00:00:07 |       |       |
    |*  5 |      FILTER                               |                      |       |       |            |          |       |       |
    |   6 |       NESTED LOOPS                        |                      |     1 |   915 |   529   (0)| 00:00:07 |       |       |
    |   7 |        NESTED LOOPS                       |                      |     1 |   915 |   529   (0)| 00:00:07 |       |       |
    |   8 |         PARTITION RANGE ITERATOR          |                      |     1 |   383 |   266   (0)| 00:00:04 |   KEY |   KEY |
    |*  9 |          TABLE ACCESS BY LOCAL INDEX ROWID| GWORDERS             |     1 |   383 |   266   (0)| 00:00:04 |   KEY |   KEY |
    |* 10 |           INDEX RANGE SCAN                | INDX_GWO_ORDERNUM    |     1 |       |   265   (0)| 00:00:04 |   KEY |   KEY |
    |  11 |         PARTITION RANGE ITERATOR          |                      |     1 |       |   262   (0)| 00:00:04 |   KEY |   KEY |
    |* 12 |          INDEX RANGE SCAN                 | INDX_GWT_GWORDERS_ID |     1 |       |   262   (0)| 00:00:04 |   KEY |   KEY |
    |* 13 |        TABLE ACCESS BY LOCAL INDEX ROWID  | GWTRXS               |     1 |   532 |   263   (0)| 00:00:04 |     1 |     1 |
    ----------------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("N">:8)
       2 - filter(ROWNUM<=:6+:7)
       4 - filter(ROWNUM<=:6+:7)
       5 - filter((TO_DATE(:5,'yyyy-mm-dd')+1>TO_DATE(:3,'yyyy-mm-dd') AND
                  TO_DATE(:4,'yyyy-mm-dd')+1>TO_DATE(:2,'yyyy-mm-dd')))
       9 - filter(("O"."CREATEDATE">=TO_DATE(:3,'yyyy-mm-dd') AND "O"."CREATEDATE"<TO_DATE(:5,'yyyy-mm-dd')+1))
      10 - access("O"."ORDERNUM"=:1)
      12 - access("G"."GWORDERS_ID"="O"."ID")
      13 - filter(("G"."CREATEDATE">=TO_DATE(:2,'yyyy-mm-dd') AND "G"."CREATEDATE"<TO_DATE(:4,'yyyy-mm-dd')+1))
     
    SQL_ID  an8watgthzfgj, child number 4
    -------------------------------------
    Plan hash value: 3102792867
     
    ----------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                 | Name                 | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    ----------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                          |                      |       |       |     5 (100)|          |       |       |
    |*  1 |  VIEW                                     |                      |     1 |  5032 |     5  (20)| 00:00:01 |       |       |
    |*  2 |   COUNT STOPKEY                           |                      |       |       |            |          |       |       |
    |   3 |    VIEW                                   |                      |     1 |  5019 |     5  (20)| 00:00:01 |       |       |
    |*  4 |     SORT ORDER BY STOPKEY                 |                      |     1 |  1017 |     5  (20)| 00:00:01 |       |       |
    |*  5 |      FILTER                               |                      |       |       |            |          |       |       |
    |   6 |       NESTED LOOPS                        |                      |     1 |  1017 |     4   (0)| 00:00:01 |       |       |
    |   7 |        NESTED LOOPS                       |                      |     1 |  1017 |     4   (0)| 00:00:01 |       |       |
    |   8 |         PARTITION RANGE ITERATOR          |                      |     1 |   343 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |*  9 |          TABLE ACCESS BY LOCAL INDEX ROWID| GWORDERS             |     1 |   343 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |* 10 |           INDEX RANGE SCAN                | INDX_GWO_ORDERNUM    |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |  11 |         PARTITION RANGE ITERATOR          |                      |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 12 |          INDEX RANGE SCAN                 | INDX_GWT_GWORDERS_ID |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 13 |        TABLE ACCESS BY LOCAL INDEX ROWID  | GWTRXS               |     1 |   674 |     2   (0)| 00:00:01 |     1 |     1 |
    ----------------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("N">:8)
       2 - filter(ROWNUM<=:6+:7)
       4 - filter(ROWNUM<=:6+:7)
       5 - filter((TO_DATE(:5,'yyyy-mm-dd')+1>TO_DATE(:3,'yyyy-mm-dd') AND
                  TO_DATE(:4,'yyyy-mm-dd')+1>TO_DATE(:2,'yyyy-mm-dd')))
       9 - filter(("O"."CREATEDATE">=TO_DATE(:3,'yyyy-mm-dd') AND "O"."CREATEDATE"<TO_DATE(:5,'yyyy-mm-dd')+1))
      10 - access("O"."ORDERNUM"=:1)
      12 - access("G"."GWORDERS_ID"="O"."ID")
      13 - filter(("G"."CREATEDATE">=TO_DATE(:2,'yyyy-mm-dd') AND "G"."CREATEDATE"<TO_DATE(:4,'yyyy-mm-dd')+1))
     
    SQL_ID  an8watgthzfgj, child number 5
    -------------------------------------
    Plan hash value: 3102792867
     
    ----------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                 | Name                 | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    ----------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                          |                      |       |       |     5 (100)|          |       |       |
    |*  1 |  VIEW                                     |                      |     1 |  5032 |     5  (20)| 00:00:01 |       |       |
    |*  2 |   COUNT STOPKEY                           |                      |       |       |            |          |       |       |
    |   3 |    VIEW                                   |                      |     1 |  5019 |     5  (20)| 00:00:01 |       |       |
    |*  4 |     SORT ORDER BY STOPKEY                 |                      |     1 |  1106 |     5  (20)| 00:00:01 |       |       |
    |*  5 |      FILTER                               |                      |       |       |            |          |       |       |
    |   6 |       NESTED LOOPS                        |                      |     1 |  1106 |     4   (0)| 00:00:01 |       |       |
    |   7 |        NESTED LOOPS                       |                      |     1 |  1106 |     4   (0)| 00:00:01 |       |       |
    |   8 |         PARTITION RANGE ITERATOR          |                      |     1 |   355 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |*  9 |          TABLE ACCESS BY LOCAL INDEX ROWID| GWORDERS             |     1 |   355 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |* 10 |           INDEX RANGE SCAN                | INDX_GWO_ORDERNUM    |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |  11 |         PARTITION RANGE ITERATOR          |                      |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 12 |          INDEX RANGE SCAN                 | INDX_GWT_GWORDERS_ID |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 13 |        TABLE ACCESS BY LOCAL INDEX ROWID  | GWTRXS               |     1 |   751 |     2   (0)| 00:00:01 |     1 |     1 |
    ----------------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("N">:8)
       2 - filter(ROWNUM<=:6+:7)
       4 - filter(ROWNUM<=:6+:7)
       5 - filter((TO_DATE(:5,'yyyy-mm-dd')+1>TO_DATE(:3,'yyyy-mm-dd') AND
                  TO_DATE(:4,'yyyy-mm-dd')+1>TO_DATE(:2,'yyyy-mm-dd')))
       9 - filter(("O"."CREATEDATE">=TO_DATE(:3,'yyyy-mm-dd') AND "O"."CREATEDATE"<TO_DATE(:5,'yyyy-mm-dd')+1))
      10 - access("O"."ORDERNUM"=:1)
      12 - access("G"."GWORDERS_ID"="O"."ID")
      13 - filter(("G"."CREATEDATE">=TO_DATE(:2,'yyyy-mm-dd') AND "G"."CREATEDATE"<TO_DATE(:4,'yyyy-mm-dd')+1))
     
    SQL_ID  an8watgthzfgj, child number 6
    -------------------------------------
    Plan hash value: 778449213
     
    --------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                | Name                | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    --------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                         |                     |       |       |     7 (100)|          |       |       |
    |*  1 |  VIEW                                    |                     |     1 |  5032 |     7   (0)| 00:00:01 |       |       |
    |*  2 |   COUNT STOPKEY                          |                     |       |       |            |          |       |       |
    |   3 |    VIEW                                  |                     |     1 |  5019 |     7   (0)| 00:00:01 |       |       |
    |*  4 |     FILTER                               |                     |       |       |            |          |       |       |
    |   5 |      NESTED LOOPS                        |                     |     1 |   916 |     7   (0)| 00:00:01 |       |       |
    |   6 |       NESTED LOOPS                       |                     |     1 |   916 |     7   (0)| 00:00:01 |       |       |
    |   7 |        PARTITION RANGE ITERATOR          |                     |     1 |   533 |     4   (0)| 00:00:01 |   KEY |   KEY |
    |   8 |         TABLE ACCESS BY LOCAL INDEX ROWID| GWTRXS              |     1 |   533 |     4   (0)| 00:00:01 |   KEY |   KEY |
    |*  9 |          INDEX RANGE SCAN DESCENDING     | INDX_GWT_CREATEDATE |     1 |       |     3   (0)| 00:00:01 |   KEY |   KEY |
    |  10 |        PARTITION RANGE ITERATOR          |                     |     1 |       |     2   (0)| 00:00:01 |   KEY |   KEY |
    |* 11 |         INDEX RANGE SCAN                 | INDX_GWO_CREATEDATE |     1 |       |     2   (0)| 00:00:01 |   KEY |   KEY |
    |* 12 |       TABLE ACCESS BY LOCAL INDEX ROWID  | GWORDERS            |     1 |   383 |     3   (0)| 00:00:01 |     1 |     1 |
    --------------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("N">:8)
       2 - filter(ROWNUM<=:6+:7)
       4 - filter((TO_DATE(:5,'yyyy-mm-dd')+1>TO_DATE(:3,'yyyy-mm-dd') AND
                  TO_DATE(:4,'yyyy-mm-dd')+1>TO_DATE(:2,'yyyy-mm-dd')))
       9 - access("G"."CREATEDATE"<TO_DATE(:4,'yyyy-mm-dd')+1 AND "G"."CREATEDATE">=TO_DATE(:2,'yyyy-mm-dd'))
      11 - access("O"."CREATEDATE">=TO_DATE(:3,'yyyy-mm-dd') AND "O"."CREATEDATE"<TO_DATE(:5,'yyyy-mm-dd')+1)
      12 - filter(("O"."ORDERNUM"=:1 AND "G"."GWORDERS_ID"="O"."ID"))
     
    SQL_ID  an8watgthzfgj, child number 7
    -------------------------------------
    Plan hash value: 3102792867
     
    ----------------------------------------------------------------------------------------------------------------------------------
    | Id  | Operation                                 | Name                 | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
    ----------------------------------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                          |                      |       |       |     5 (100)|          |       |       |
    |*  1 |  VIEW                                     |                      |     1 |  5032 |     5  (20)| 00:00:01 |       |       |
    |*  2 |   COUNT STOPKEY                           |                      |       |       |            |          |       |       |
    |   3 |    VIEW                                   |                      |     1 |  5019 |     5  (20)| 00:00:01 |       |       |
    |*  4 |     SORT ORDER BY STOPKEY                 |                      |     1 |  1011 |     5  (20)| 00:00:01 |       |       |
    |*  5 |      FILTER                               |                      |       |       |            |          |       |       |
    |   6 |       NESTED LOOPS                        |                      |     1 |  1011 |     4   (0)| 00:00:01 |       |       |
    |   7 |        NESTED LOOPS                       |                      |     1 |  1011 |     4   (0)| 00:00:01 |       |       |
    |   8 |         PARTITION RANGE ITERATOR          |                      |     1 |   377 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |*  9 |          TABLE ACCESS BY LOCAL INDEX ROWID| GWORDERS             |     1 |   377 |     2   (0)| 00:00:01 |   KEY |   KEY |
    |* 10 |           INDEX RANGE SCAN                | INDX_GWO_ORDERNUM    |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |  11 |         PARTITION RANGE ITERATOR          |                      |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 12 |          INDEX RANGE SCAN                 | INDX_GWT_GWORDERS_ID |     1 |       |     1   (0)| 00:00:01 |   KEY |   KEY |
    |* 13 |        TABLE ACCESS BY LOCAL INDEX ROWID  | GWTRXS               |     1 |   634 |     2   (0)| 00:00:01 |     1 |     1 |
    ----------------------------------------------------------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("N">:8)
       2 - filter(ROWNUM<=:6+:7)
       4 - filter(ROWNUM<=:6+:7)
       5 - filter((TO_DATE(:5,'yyyy-mm-dd')+1>TO_DATE(:3,'yyyy-mm-dd') AND
                  TO_DATE(:4,'yyyy-mm-dd')+1>TO_DATE(:2,'yyyy-mm-dd')))
       9 - filter(("O"."CREATEDATE">=TO_DATE(:3,'yyyy-mm-dd') AND "O"."CREATEDATE"<TO_DATE(:5,'yyyy-mm-dd')+1))
      10 - access("O"."ORDERNUM"=:1)
      12 - access("G"."GWORDERS_ID"="O"."ID")
      13 - filter(("G"."CREATEDATE">=TO_DATE(:2,'yyyy-mm-dd') AND "G"."CREATEDATE"<TO_DATE(:4,'yyyy-mm-dd')+1))

    4、分析执行计划

    从执行计划中,可以看到,第七个执行计划错误,没有使用上索引"O"."ORDERNUM"=:1,导致检索范围变得非常庞大。

    从SQL分析,ORDERNUM比较唯一,得到的O.ID也是唯一,SQL一般情况只能得到一行数据。

    因此,此子执行计划可能不正确。

     

     

  • 相关阅读:
    [Leetcode]7. 整数反转
    [Leetcode]6. Z 字形变换
    [Leetcode]5. 最长回文子串
    java实现各种排序算法1
    [Leetcode]4. 寻找两个正序数组的中位数
    css设置字体单行,多行超出省略号显示
    如何获得select被选中option的value和text和......
    在vue项目中,将juery设置为全局变量
    js中遍历对象的属性和值的方法
    深入理解JS的事件绑定、事件流模型
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/10271136.html
Copyright © 2011-2022 走看看