ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 301|回复: 5

超多逻辑读的sql该如何优化

[复制链接]
论坛徽章:
0
发表于 2017-9-13 14:30 | 显示全部楼层 |阅读模式
一个超多逻辑读的SQL,请各位给点优化建议

select count(*) from ACT_HI_TASKINST RES inner join ACT_HI_PROCINST E ON (RES.PROC_INST_ID_ = E.ID_ and E.DELETE_REASON_ is null)
inner join (SELECT PROC_INST_ID_, MAX(START_TIME_) as MaxTime FROM ACT_HI_TASKINST WHERE (ASSIGNEE_='01fe715413c542da967398883b2ee701' or id_ in ('')) GROUP BY PROC_INST_ID_) f
on RES.PROC_INST_ID_ = f.PROC_INST_ID_ AND RES.START_TIME_ = f.MaxTime inner join ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_
inner join PROCESS_INSTANCE_NO pin on (RES.PROC_INST_ID_ = pin.PROCESS_INSTANCE_ID) left join T_VBBK vbbk on (vbbk.FORM_INSTANCE_ID = E.BUSINESS_KEY_
and vbbk.BB12 <> 'O') WHERE (RES.ASSIGNEE_ ='a0efaec2d9b14742aaaf45b6dc5e16e9' or RES.ID_ IN ('')) and (RES.END_TIME_ is not null or RES.ID_ IN (select tt.task_id from task_transfer tt
inner join task_idea ti on tt.task_id=ti.task_id where ti.content is not null and tt.user_id='3dc10e9d93594b7993d27db02853d433' )) and E.END_TIME_ is not null and D.ID_
IN (select h.act_process_definition_id from process_ru_record h left join process_definition k on h.process_definition_id = k.id WHERE k.id ='af9afe4128d2423bb6adbaa7a674cddb' );


  COUNT(*)
----------
         0

Elapsed: 00:00:00.99

Execution Plan
----------------------------------------------------------
Plan hash value: 192106353

------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                             | Name                           | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                      |                                |     1 |   215 |   661   (1)| 00:00:08 |
|   1 |  SORT AGGREGATE                       |                                |     1 |   215 |            |          |
|*  2 |   FILTER                              |                                |       |       |            |          |
|*  3 |    HASH JOIN OUTER                    |                                |     1 |   215 |   661   (1)| 00:00:08 |
|   4 |     NESTED LOOPS                      |                                |     1 |   179 |   631   (0)| 00:00:08 |
|   5 |      NESTED LOOPS                     |                                |     1 |   164 |   623   (0)| 00:00:08 |
|   6 |       NESTED LOOPS                    |                                |     1 |   116 |   622   (0)| 00:00:08 |
|   7 |        NESTED LOOPS                   |                                |     1 |   108 |   621   (0)| 00:00:08 |
|   8 |         NESTED LOOPS SEMI             |                                |     1 |    21 |   109   (0)| 00:00:02 |
|   9 |          INDEX FULL SCAN              | SYS_C0013806                   |   108 |  2052 |     1   (0)| 00:00:01 |
|  10 |          VIEW PUSHED PREDICATE        | VW_NSO_1                       |     1 |     2 |     1   (0)| 00:00:01 |
|  11 |           NESTED LOOPS                |                                |     1 |   104 |     1   (0)| 00:00:01 |
|* 12 |            INDEX UNIQUE SCAN          | SYS_C0013740                   |     1 |    33 |     0   (0)| 00:00:01 |
|* 13 |            TABLE ACCESS BY INDEX ROWID| PROCESS_RU_RECORD              |     1 |    71 |     1   (0)| 00:00:01 |
|* 14 |             INDEX RANGE SCAN          | IDX_PROCESS_RU_RECORD_APDI     |     1 |       |     0   (0)| 00:00:01 |
|* 15 |         TABLE ACCESS BY INDEX ROWID   | ACT_HI_TASKINST                |    80 |  6960 |   512   (0)| 00:00:07 |
|* 16 |          INDEX RANGE SCAN             | IND0804045_ASSIGNEE_           |   641 |       |     6   (0)| 00:00:01 |
|* 17 |        INDEX RANGE SCAN               | IDX_PROCESS_INSTANCE_NO_PIID   |     1 |     8 |     1   (0)| 00:00:01 |
|* 18 |       TABLE ACCESS BY INDEX ROWID     | ACT_HI_PROCINST                |     1 |    48 |     1   (0)| 00:00:01 |
|* 19 |        INDEX UNIQUE SCAN              | BIN$QmzHk3AgOs3gUyUUFawTzg==$0 |     1 |       |     0   (0)| 00:00:01 |
|* 20 |      VIEW PUSHED PREDICATE            |                                |     1 |    15 |     8   (0)| 00:00:01 |
|  21 |       SORT GROUP BY                   |                                |     1 |    50 |     8   (0)| 00:00:01 |
|* 22 |        TABLE ACCESS BY INDEX ROWID    | ACT_HI_TASKINST                |     1 |    50 |     8   (0)| 00:00:01 |
|* 23 |         INDEX RANGE SCAN              | BIN$QmzHk3AVOs3gUyUUFawTzg==$0 |     5 |       |     3   (0)| 00:00:01 |
|  24 |     VIEW                              | index$_join$_011               |  2137 | 76932 |    30   (4)| 00:00:01 |
|* 25 |      HASH JOIN                        |                                |       |       |            |          |
|* 26 |       INDEX FAST FULL SCAN            | IND0804687_BB12                |  2137 | 76932 |     8   (0)| 00:00:01 |
|  27 |       INDEX FAST FULL SCAN            | IND0804005_FORM_INSTANCE_ID    |  2137 | 76932 |    29   (0)| 00:00:01 |
|  28 |    NESTED LOOPS                       |                                |       |       |            |          |
|  29 |     NESTED LOOPS                      |                                |     1 |    90 |     4   (0)| 00:00:01 |
|* 30 |      TABLE ACCESS BY INDEX ROWID      | TASK_TRANSFER                  |     1 |    41 |     2   (0)| 00:00:01 |
|* 31 |       INDEX RANGE SCAN                | user_id_index2                 |     1 |       |     1   (0)| 00:00:01 |
|* 32 |      INDEX RANGE SCAN                 | IND0804342_TASK_ID             |     1 |       |     1   (0)| 00:00:01 |
|* 33 |     TABLE ACCESS BY INDEX ROWID       | TASK_IDEA                      |     1 |    49 |     2   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - filter("RES"."END_TIME_" IS NOT NULL OR  EXISTS (SELECT 0 FROM "TASK_IDEA" "TI","TASK_TRANSFER" "TT"
              WHERE SYS_OP_DESCEND("USER_ID"=HEXTORAW('CC9B9CCECF9AC69BC6CCCAC6CB9DC8C6C6CC9BCDC89B9DCFCDC7CACC9BCBCCCCFF')
              AND SYS_OP_C2C("TT"."TASK_ID"=:B1 AND SYS_OP_UNDESCEND(SYS_OP_DESCEND("USER_ID")='3dc10e9d93594b7993d27db02853
              d433' AND "TT"."TASK_ID"="TI"."TASK_ID" AND "TI"."CONTENT" IS NOT NULL))
   3 - access("E"."BUSINESS_KEY_"=SYS_OP_C2C("VBBK"."FORM_INSTANCE_ID"(+)))
  12 - access("K"."ID"='af9afe4128d2423bb6adbaa7a674cddb')
  13 - filter("H"."PROCESS_DEFINITION_ID"='af9afe4128d2423bb6adbaa7a674cddb')
  14 - access(SYS_OP_C2C("ACT_PROCESS_DEFINITION_ID"="D"."ID_"
  15 - filter("RES"."PROC_DEF_ID_"="D"."ID_"
  16 - access("RES"."ASSIGNEE_"=U'a0efaec2d9b14742aaaf45b6dc5e16e9')
  17 - access("RES"."PROC_INST_ID_"=SYS_OP_C2C("PROCESS_INSTANCE_ID")
  18 - filter("E"."END_TIME_" IS NOT NULL AND "E"."DELETE_REASON_" IS NULL)
  19 - access("RES"."PROC_INST_ID_"="E"."ID_"
  20 - filter("RES"."START_TIME_"="F"."MAXTIME"
  22 - filter("ASSIGNEE_"=U'01fe715413c542da967398883b2ee701')
  23 - access("PROC_INST_ID_"="RES"."PROC_INST_ID_"
  25 - access(ROWID=ROWID)
  26 - filter("VBBK"."BB12"<>'O')
  30 - filter(SYS_OP_C2C("TT"."TASK_ID")=:B1)
  31 - access(SYS_OP_DESCEND("USER_ID")=HEXTORAW('CC9B9CCECF9AC69BC6CCCAC6CB9DC8C6C6CC9BCDC89B9DCFCDC7CACC9BCBCC
              CCFF') )
       filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("USER_ID"))='3dc10e9d93594b7993d27db02853d433')
  32 - access("TT"."TASK_ID"="TI"."TASK_ID")
  33 - filter("TI"."CONTENT" IS NOT NULL)


Statistics
----------------------------------------------------------
         15  recursive calls
          0  db block gets
     213252  consistent gets
          0  physical reads
          0  redo size
        525  bytes sent via SQL*Net to client
        524  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
       2449  sorts (memory)
          0  sorts (disk)
          1  rows processed


拜托了!!!
论坛徽章:
0
 楼主| 发表于 2017-9-13 14:34 | 显示全部楼层
界面显示有问题,看附件。

一个超多逻辑读的sql该如何优化.sql

7.98 KB, 下载次数: 2

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
发表于 2017-9-13 15:59 | 显示全部楼层

Try!

select count(*)
from
(
select RES.rowid
  from ACT_HI_TASKINST RES
inner join ACT_HI_PROCINST E ON (RES.PROC_INST_ID_ = E.ID_ and E.DELETE_REASON_ is null)
inner join (SELECT PROC_INST_ID_, MAX(START_TIME_) as MaxTime
               FROM ACT_HI_TASKINST
              WHERE (ASSIGNEE_ = '01fe715413c542da967398883b2ee701' or id_ in (''))
              GROUP BY PROC_INST_ID_) f on RES.PROC_INST_ID_ = f.PROC_INST_ID_
                                       AND RES.START_TIME_ = f.MaxTime
inner join ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_
inner join PROCESS_INSTANCE_NO pin on (RES.PROC_INST_ID_ = pin.PROCESS_INSTANCE_ID)
  left join T_VBBK vbbk on (vbbk.FORM_INSTANCE_ID = E.BUSINESS_KEY_ and vbbk.BB12 <> 'O')
WHERE (RES.ASSIGNEE_ = 'a0efaec2d9b14742aaaf45b6dc5e16e9' or RES.ID_ IN (''))
   and (RES.END_TIME_ is not null)
   and E.END_TIME_ is not null
   and D.ID_ IN (select h.act_process_definition_id
                   from process_ru_record h
                   left join process_definition k on h.process_definition_id = k.id
                  WHERE k.id = 'af9afe4128d2423bb6adbaa7a674cddb')
union
select RES.rowid
  from ACT_HI_TASKINST RES
inner join ACT_HI_PROCINST E ON (RES.PROC_INST_ID_ = E.ID_ and E.DELETE_REASON_ is null)
inner join (SELECT PROC_INST_ID_, MAX(START_TIME_) as MaxTime
               FROM ACT_HI_TASKINST
              WHERE (ASSIGNEE_ = '01fe715413c542da967398883b2ee701' or id_ in (''))
              GROUP BY PROC_INST_ID_) f on RES.PROC_INST_ID_ = f.PROC_INST_ID_
                                       AND RES.START_TIME_ = f.MaxTime
inner join ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_
inner join PROCESS_INSTANCE_NO pin on (RES.PROC_INST_ID_ = pin.PROCESS_INSTANCE_ID)
  left join T_VBBK vbbk on (vbbk.FORM_INSTANCE_ID = E.BUSINESS_KEY_ and vbbk.BB12 <> 'O')
WHERE (RES.ASSIGNEE_ = 'a0efaec2d9b14742aaaf45b6dc5e16e9' or RES.ID_ IN (''))
   and (RES.ID_ IN(select tt.task_id
                     from task_transfer tt inner join task_idea ti on tt.task_id = ti.task_id
                    where ti.content is not null
                      and tt.user_id = '3dc10e9d93594b7993d27db02853d433'))
   and E.END_TIME_ is not null
   and D.ID_ IN (select h.act_process_definition_id
                   from process_ru_record h
                   left join process_definition k on h.process_definition_id = k.id
                  WHERE k.id = 'af9afe4128d2423bb6adbaa7a674cddb')
);

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2017-9-13 16:17 | 显示全部楼层
本帖最后由 zhjiafe 于 2017-9-13 16:19 编辑

@bell6248,逻辑读少了很多,但响应时间和COST增加了

SQL> select count(*)
from
  2    3  (
  4  select RES.rowid
  5    from ACT_HI_TASKINST RES
  6  inner join ACT_HI_PROCINST E ON (RES.PROC_INST_ID_ = E.ID_ and E.DELETE_REASON_ is null)
  7  inner join (SELECT PROC_INST_ID_, MAX(START_TIME_) as MaxTime
  8                 FROM ACT_HI_TASKINST
  9                WHERE (ASSIGNEE_ = '01fe715413c542da967398883b2ee701' or id_ in (''))
10                GROUP BY PROC_INST_ID_) f on RES.PROC_INST_ID_ = f.PROC_INST_ID_
11                                         AND RES.START_TIME_ = f.MaxTime
12  inner join ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_
13  inner join PROCESS_INSTANCE_NO pin on (RES.PROC_INST_ID_ = pin.PROCESS_INSTANCE_ID)
14    left join T_VBBK vbbk on (vbbk.FORM_INSTANCE_ID = E.BUSINESS_KEY_ and vbbk.BB12 <> 'O')
15  WHERE (RES.ASSIGNEE_ = 'a0efaec2d9b14742aaaf45b6dc5e16e9' or RES.ID_ IN (''))
16     and (RES.END_TIME_ is not null)
17     and E.END_TIME_ is not null
18     and D.ID_ IN (select h.act_process_definition_id
19                     from process_ru_record h
20                     left join process_definition k on h.process_definition_id = k.id
21                    WHERE k.id = 'af9afe4128d2423bb6adbaa7a674cddb')
22  union
23  select RES.rowid
24    from ACT_HI_TASKINST RES
25  inner join ACT_HI_PROCINST E ON (RES.PROC_INST_ID_ = E.ID_ and E.DELETE_REASON_ is null)
26  inner join (SELECT PROC_INST_ID_, MAX(START_TIME_) as MaxTime
27                 FROM ACT_HI_TASKINST
28                WHERE (ASSIGNEE_ = '01fe715413c542da967398883b2ee701' or id_ in (''))
29                GROUP BY PROC_INST_ID_) f on RES.PROC_INST_ID_ = f.PROC_INST_ID_
30                                         AND RES.START_TIME_ = f.MaxTime
31  inner join ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_
32  inner join PROCESS_INSTANCE_NO pin on (RES.PROC_INST_ID_ = pin.PROCESS_INSTANCE_ID)
33    left join T_VBBK vbbk on (vbbk.FORM_INSTANCE_ID = E.BUSINESS_KEY_ and vbbk.BB12 <> 'O')
34  WHERE (RES.ASSIGNEE_ = 'a0efaec2d9b14742aaaf45b6dc5e16e9' or RES.ID_ IN (''))
35     and (RES.ID_ IN(select tt.task_id
36                       from task_transfer tt inner join task_idea ti on tt.task_id = ti.task_id
37                      where ti.content is not null
38                        and tt.user_id = '3dc10e9d93594b7993d27db02853d433'))
39     and E.END_TIME_ is not null
40     and D.ID_ IN (select h.act_process_definition_id
41                     from process_ru_record h
42                     left join process_definition k on h.process_definition_id = k.id
43                    WHERE k.id = 'af9afe4128d2423bb6adbaa7a674cddb')
44  );

  COUNT(*)
----------
         0

Elapsed: 00:00:00.26

Execution Plan
----------------------------------------------------------
Plan hash value: 754043813

---------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                           | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                                |     1 |       |  1108   (1)| 00:00:14 |
|   1 |  SORT AGGREGATE                          |                                |     1 |       |            |          |
|   2 |   VIEW                                   |                                |     2 |       |  1108   (1)| 00:00:14 |
|   3 |    SORT UNIQUE                           |                                |     2 |   788 |  1108   (5)| 00:00:14 |
|   4 |     UNION-ALL                            |                                |       |       |            |          |
|*  5 |      HASH JOIN OUTER                     |                                |     1 |   399 |  1060   (1)| 00:00:13 |
|   6 |       NESTED LOOPS                       |                                |     1 |   363 |  1030   (1)| 00:00:13 |
|   7 |        NESTED LOOPS                      |                                |     1 |   355 |  1029   (1)| 00:00:13 |
|   8 |         NESTED LOOPS                     |                                |     1 |   307 |  1028   (1)| 00:00:13 |
|   9 |          NESTED LOOPS                    |                                |     1 |   255 |  1027   (1)| 00:00:13 |
|* 10 |           HASH JOIN                      |                                |     1 |   236 |  1027   (1)| 00:00:13 |
|  11 |            VIEW                          |                                |   639 | 70929 |   514   (1)| 00:00:07 |
|  12 |             HASH GROUP BY                |                                |   639 | 31950 |   514   (1)| 00:00:07 |
|  13 |              TABLE ACCESS BY INDEX ROWID | ACT_HI_TASKINST                |   641 | 32050 |   513   (0)| 00:00:07 |
|* 14 |               INDEX RANGE SCAN           | IND0804045_ASSIGNEE_           |   641 |       |     7   (0)| 00:00:01 |
|  15 |            NESTED LOOPS                  |                                |   601 | 75125 |   512   (0)| 00:00:07 |
|* 16 |             INDEX UNIQUE SCAN            | SYS_C0013740                   |     1 |    33 |     0   (0)| 00:00:01 |
|* 17 |             TABLE ACCESS BY INDEX ROWID  | ACT_HI_TASKINST                |   601 | 55292 |   512   (0)| 00:00:07 |
|* 18 |              INDEX RANGE SCAN            | IND0804045_ASSIGNEE_           |   641 |       |     6   (0)| 00:00:01 |
|* 19 |           INDEX UNIQUE SCAN              | SYS_C0013806                   |     1 |    19 |     0   (0)| 00:00:01 |
|* 20 |          TABLE ACCESS BY INDEX ROWID     | PROCESS_RU_RECORD              |     1 |    52 |     1   (0)| 00:00:01 |
|* 21 |           INDEX RANGE SCAN               | IDX_PROCESS_RU_RECORD_APDI     |     1 |       |     0   (0)| 00:00:01 |
|* 22 |         TABLE ACCESS BY INDEX ROWID      | ACT_HI_PROCINST                |     1 |    48 |     1   (0)| 00:00:01 |
|* 23 |          INDEX UNIQUE SCAN               | BIN$QmzHk3AgOs3gUyUUFawTzg==$0 |     1 |       |     0   (0)| 00:00:01 |
|* 24 |        INDEX RANGE SCAN                  | IDX_PROCESS_INSTANCE_NO_PIID   |     1 |     8 |     1   (0)| 00:00:01 |
|  25 |       VIEW                               | index$_join$_012               |  2137 | 76932 |    30   (4)| 00:00:01 |
|* 26 |        HASH JOIN                         |                                |       |       |            |          |
|* 27 |         INDEX FAST FULL SCAN             | IND0804687_BB12                |  2137 | 76932 |     8   (0)| 00:00:01 |
|  28 |         INDEX FAST FULL SCAN             | IND0804005_FORM_INSTANCE_ID    |  2137 | 76932 |    29   (0)| 00:00:01 |
|* 29 |      HASH JOIN OUTER                     |                                |     1 |   389 |    46   (3)| 00:00:01 |
|  30 |       NESTED LOOPS                       |                                |     1 |   353 |    16   (0)| 00:00:01 |
|  31 |        NESTED LOOPS                      |                                |     1 |   305 |    15   (0)| 00:00:01 |
|  32 |         NESTED LOOPS                     |                                |     1 |   297 |    14   (0)| 00:00:01 |
|  33 |          NESTED LOOPS                    |                                |     1 |   248 |    12   (0)| 00:00:01 |
|  34 |           NESTED LOOPS                   |                                |     1 |   196 |    11   (0)| 00:00:01 |
|  35 |            NESTED LOOPS                  |                                |     1 |   177 |    11   (0)| 00:00:01 |
|  36 |             NESTED LOOPS                 |                                |     1 |   162 |     3   (0)| 00:00:01 |
|  37 |              NESTED LOOPS                |                                |     1 |    74 |     1   (0)| 00:00:01 |
|* 38 |               INDEX UNIQUE SCAN          | SYS_C0013740                   |     1 |    33 |     0   (0)| 00:00:01 |
|  39 |               TABLE ACCESS BY INDEX ROWID| TASK_TRANSFER                  |     1 |    41 |     1   (0)| 00:00:01 |
|* 40 |                INDEX RANGE SCAN          | user_id_index2                 |     1 |       |     0   (0)| 00:00:01 |
|* 41 |              TABLE ACCESS BY INDEX ROWID | ACT_HI_TASKINST                |     1 |    88 |     2   (0)| 00:00:01 |
|* 42 |               INDEX UNIQUE SCAN          | BIN$QmzHk3AWOs3gUyUUFawTzg==$0 |     1 |       |     1   (0)| 00:00:01 |
|* 43 |             VIEW PUSHED PREDICATE        |                                |     1 |    15 |     8   (0)| 00:00:01 |
|  44 |              SORT GROUP BY               |                                |     1 |    50 |     8   (0)| 00:00:01 |
|* 45 |               TABLE ACCESS BY INDEX ROWID| ACT_HI_TASKINST                |     1 |    50 |     8   (0)| 00:00:01 |
|* 46 |                INDEX RANGE SCAN          | BIN$QmzHk3AVOs3gUyUUFawTzg==$0 |     5 |       |     3   (0)| 00:00:01 |
|* 47 |            INDEX UNIQUE SCAN             | SYS_C0013806                   |     1 |    19 |     0   (0)| 00:00:01 |
|* 48 |           TABLE ACCESS BY INDEX ROWID    | PROCESS_RU_RECORD              |     1 |    52 |     1   (0)| 00:00:01 |
|* 49 |            INDEX RANGE SCAN              | IDX_PROCESS_RU_RECORD_APDI     |     1 |       |     0   (0)| 00:00:01 |
|* 50 |          TABLE ACCESS BY INDEX ROWID     | TASK_IDEA                      |     1 |    49 |     2   (0)| 00:00:01 |
|* 51 |           INDEX RANGE SCAN               | IND0804342_TASK_ID             |     1 |       |     1   (0)| 00:00:01 |
|* 52 |         INDEX RANGE SCAN                 | IDX_PROCESS_INSTANCE_NO_PIID   |     1 |     8 |     1   (0)| 00:00:01 |
|* 53 |        TABLE ACCESS BY INDEX ROWID       | ACT_HI_PROCINST                |     1 |    48 |     1   (0)| 00:00:01 |
|* 54 |         INDEX UNIQUE SCAN                | BIN$QmzHk3AgOs3gUyUUFawTzg==$0 |     1 |       |     0   (0)| 00:00:01 |
|  55 |       VIEW                               | index$_join$_027               |  2137 | 76932 |    30   (4)| 00:00:01 |
|* 56 |        HASH JOIN                         |                                |       |       |            |          |
|* 57 |         INDEX FAST FULL SCAN             | IND0804687_BB12                |  2137 | 76932 |     8   (0)| 00:00:01 |
|  58 |         INDEX FAST FULL SCAN             | IND0804005_FORM_INSTANCE_ID    |  2137 | 76932 |    29   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - access("E"."BUSINESS_KEY_"=SYS_OP_C2C("VBBK"."FORM_INSTANCE_ID"(+)))
  10 - access("RES"."PROC_INST_ID_"="F"."PROC_INST_ID_" AND "RES"."START_TIME_"="F"."MAXTIME"
  14 - access("ASSIGNEE_"=U'01fe715413c542da967398883b2ee701')
  16 - access("K"."ID"='af9afe4128d2423bb6adbaa7a674cddb')
  17 - filter("RES"."END_TIME_" IS NOT NULL)
  18 - access("RES"."ASSIGNEE_"=U'a0efaec2d9b14742aaaf45b6dc5e16e9')
  19 - access("RES"."PROC_DEF_ID_"="D"."ID_"
  20 - filter("H"."PROCESS_DEFINITION_ID"='af9afe4128d2423bb6adbaa7a674cddb')
  21 - access("D"."ID_"=SYS_OP_C2C("ACT_PROCESS_DEFINITION_ID")
  22 - filter("E"."END_TIME_" IS NOT NULL AND "E"."DELETE_REASON_" IS NULL)
  23 - access("RES"."PROC_INST_ID_"="E"."ID_"
  24 - access("RES"."PROC_INST_ID_"=SYS_OP_C2C("PROCESS_INSTANCE_ID")
  26 - access(ROWID=ROWID)
  27 - filter("VBBK"."BB12"<>'O')
  29 - access("E"."BUSINESS_KEY_"=SYS_OP_C2C("VBBK"."FORM_INSTANCE_ID"(+)))
  38 - access("K"."ID"='af9afe4128d2423bb6adbaa7a674cddb')
  40 - access(SYS_OP_DESCEND("USER_ID"=HEXTORAW('CC9B9CCECF9AC69BC6CCCAC6CB9DC8C6C6CC9BCDC89B9DCFCDC7CACC9BCBCCCCF
              F') )
       filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("USER_ID")='3dc10e9d93594b7993d27db02853d433')
  41 - filter("RES"."ASSIGNEE_"=U'a0efaec2d9b14742aaaf45b6dc5e16e9')
  42 - access("RES"."ID_"=SYS_OP_C2C("TT"."TASK_ID")
  43 - filter("RES"."START_TIME_"="F"."MAXTIME"
  45 - filter("ASSIGNEE_"=U'01fe715413c542da967398883b2ee701')
  46 - access("PROC_INST_ID_"="RES"."PROC_INST_ID_"
  47 - access("RES"."PROC_DEF_ID_"="D"."ID_")
  48 - filter("H"."PROCESS_DEFINITION_ID"='af9afe4128d2423bb6adbaa7a674cddb')
  49 - access("D"."ID_"=SYS_OP_C2C("ACT_PROCESS_DEFINITION_ID"))
  50 - filter("TI"."CONTENT" IS NOT NULL)
  51 - access("TT"."TASK_ID"="TI"."TASK_ID")
  52 - access("RES"."PROC_INST_ID_"=SYS_OP_C2C("PROCESS_INSTANCE_ID"))
  53 - filter("E"."END_TIME_" IS NOT NULL AND "E"."DELETE_REASON_" IS NULL)
  54 - access("RES"."PROC_INST_ID_"="E"."ID_")
  56 - access(ROWID=ROWID)
  57 - filter("VBBK"."BB12"<>'O')


Statistics
----------------------------------------------------------
         29  recursive calls
          0  db block gets
       3888  consistent gets
          0  physical reads
          0  redo size
        525  bytes sent via SQL*Net to client
        524  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
          1  rows processed

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
发表于 2017-9-13 17:02 | 显示全部楼层
zhjiafe 发表于 2017-9-13 16:17
@bell6248,逻辑读少了很多,但响应时间和COST增加了

SQL> select count(*)

把该语句执行2次, 取第二次的,由于目前recursive calls不为0

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2017-9-13 17:20 | 显示全部楼层
多次执行后, recursive calls已变为0,consistent gets为823更少了,但Cost (%CPU)和Time 比调整之前增加了

调整之前:
------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                             | Name                           | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                      |                                |     1 |   215 |   661   (1)| 00:00:08 |
|   1 |  SORT AGGREGATE                       |                                |     1 |   215 |            |          |
|*  2 |   FILTER                              |                                |       |       |            |          |
|*  3 |    HASH JOIN OUTER                    |                                |     1 |   215 |   661   (1)| 00:00:08 |
。。。。。。。。。。。。。。。。

调整之后:
Execution Plan
----------------------------------------------------------
Plan hash value: 754043813

---------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                           | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                                |     1 |       |  1108   (1)| 00:00:14 |
|   1 |  SORT AGGREGATE                          |                                |     1 |       |            |          |
|   2 |   VIEW                                   |                                |     2 |       |  1108   (1)| 00:00:14 |
。。。。。。。。。。。。。



Elapsed: 00:00:00.01

Execution Plan
----------------------------------------------------------
Plan hash value: 754043813

---------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                           | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                                |     1 |       |  1108   (1)| 00:00:14 |
|   1 |  SORT AGGREGATE                          |                                |     1 |       |            |          |
|   2 |   VIEW                                   |                                |     2 |       |  1108   (1)| 00:00:14 |
|   3 |    SORT UNIQUE                           |                                |     2 |   788 |  1108   (5)| 00:00:14 |
|   4 |     UNION-ALL                            |                                |       |       |            |          |
|*  5 |      HASH JOIN OUTER                     |                                |     1 |   399 |  1060   (1)| 00:00:13 |
|   6 |       NESTED LOOPS                       |                                |     1 |   363 |  1030   (1)| 00:00:13 |
|   7 |        NESTED LOOPS                      |                                |     1 |   355 |  1029   (1)| 00:00:13 |
|   8 |         NESTED LOOPS                     |                                |     1 |   307 |  1028   (1)| 00:00:13 |
|   9 |          NESTED LOOPS                    |                                |     1 |   255 |  1027   (1)| 00:00:13 |
|* 10 |           HASH JOIN                      |                                |     1 |   236 |  1027   (1)| 00:00:13 |
|  11 |            VIEW                          |                                |   639 | 70929 |   514   (1)| 00:00:07 |
|  12 |             HASH GROUP BY                |                                |   639 | 31950 |   514   (1)| 00:00:07 |
|  13 |              TABLE ACCESS BY INDEX ROWID | ACT_HI_TASKINST                |   641 | 32050 |   513   (0)| 00:00:07 |
|* 14 |               INDEX RANGE SCAN           | IND0804045_ASSIGNEE_           |   641 |       |     7   (0)| 00:00:01 |
|  15 |            NESTED LOOPS                  |                                |   601 | 75125 |   512   (0)| 00:00:07 |
|* 16 |             INDEX UNIQUE SCAN            | SYS_C0013740                   |     1 |    33 |     0   (0)| 00:00:01 |
|* 17 |             TABLE ACCESS BY INDEX ROWID  | ACT_HI_TASKINST                |   601 | 55292 |   512   (0)| 00:00:07 |
|* 18 |              INDEX RANGE SCAN            | IND0804045_ASSIGNEE_           |   641 |       |     6   (0)| 00:00:01 |
|* 19 |           INDEX UNIQUE SCAN              | SYS_C0013806                   |     1 |    19 |     0   (0)| 00:00:01 |
|* 20 |          TABLE ACCESS BY INDEX ROWID     | PROCESS_RU_RECORD              |     1 |    52 |     1   (0)| 00:00:01 |
|* 21 |           INDEX RANGE SCAN               | IDX_PROCESS_RU_RECORD_APDI     |     1 |       |     0   (0)| 00:00:01 |
|* 22 |         TABLE ACCESS BY INDEX ROWID      | ACT_HI_PROCINST                |     1 |    48 |     1   (0)| 00:00:01 |
|* 23 |          INDEX UNIQUE SCAN               | BIN$QmzHk3AgOs3gUyUUFawTzg==$0 |     1 |       |     0   (0)| 00:00:01 |
|* 24 |        INDEX RANGE SCAN                  | IDX_PROCESS_INSTANCE_NO_PIID   |     1 |     8 |     1   (0)| 00:00:01 |
|  25 |       VIEW                               | index$_join$_012               |  2137 | 76932 |    30   (4)| 00:00:01 |
|* 26 |        HASH JOIN                         |                                |       |       |            |          |
|* 27 |         INDEX FAST FULL SCAN             | IND0804687_BB12                |  2137 | 76932 |     8   (0)| 00:00:01 |
|  28 |         INDEX FAST FULL SCAN             | IND0804005_FORM_INSTANCE_ID    |  2137 | 76932 |    29   (0)| 00:00:01 |
|* 29 |      HASH JOIN OUTER                     |                                |     1 |   389 |    46   (3)| 00:00:01 |
|  30 |       NESTED LOOPS                       |                                |     1 |   353 |    16   (0)| 00:00:01 |
|  31 |        NESTED LOOPS                      |                                |     1 |   305 |    15   (0)| 00:00:01 |
|  32 |         NESTED LOOPS                     |                                |     1 |   297 |    14   (0)| 00:00:01 |
|  33 |          NESTED LOOPS                    |                                |     1 |   248 |    12   (0)| 00:00:01 |
|  34 |           NESTED LOOPS                   |                                |     1 |   196 |    11   (0)| 00:00:01 |
|  35 |            NESTED LOOPS                  |                                |     1 |   177 |    11   (0)| 00:00:01 |
|  36 |             NESTED LOOPS                 |                                |     1 |   162 |     3   (0)| 00:00:01 |
|  37 |              NESTED LOOPS                |                                |     1 |    74 |     1   (0)| 00:00:01 |
|* 38 |               INDEX UNIQUE SCAN          | SYS_C0013740                   |     1 |    33 |     0   (0)| 00:00:01 |
|  39 |               TABLE ACCESS BY INDEX ROWID| TASK_TRANSFER                  |     1 |    41 |     1   (0)| 00:00:01 |
|* 40 |                INDEX RANGE SCAN          | user_id_index2                 |     1 |       |     0   (0)| 00:00:01 |
|* 41 |              TABLE ACCESS BY INDEX ROWID | ACT_HI_TASKINST                |     1 |    88 |     2   (0)| 00:00:01 |
|* 42 |               INDEX UNIQUE SCAN          | BIN$QmzHk3AWOs3gUyUUFawTzg==$0 |     1 |       |     1   (0)| 00:00:01 |
|* 43 |             VIEW PUSHED PREDICATE        |                                |     1 |    15 |     8   (0)| 00:00:01 |
|  44 |              SORT GROUP BY               |                                |     1 |    50 |     8   (0)| 00:00:01 |
|* 45 |               TABLE ACCESS BY INDEX ROWID| ACT_HI_TASKINST                |     1 |    50 |     8   (0)| 00:00:01 |
|* 46 |                INDEX RANGE SCAN          | BIN$QmzHk3AVOs3gUyUUFawTzg==$0 |     5 |       |     3   (0)| 00:00:01 |
|* 47 |            INDEX UNIQUE SCAN             | SYS_C0013806                   |     1 |    19 |     0   (0)| 00:00:01 |
|* 48 |           TABLE ACCESS BY INDEX ROWID    | PROCESS_RU_RECORD              |     1 |    52 |     1   (0)| 00:00:01 |
|* 49 |            INDEX RANGE SCAN              | IDX_PROCESS_RU_RECORD_APDI     |     1 |       |     0   (0)| 00:00:01 |
|* 50 |          TABLE ACCESS BY INDEX ROWID     | TASK_IDEA                      |     1 |    49 |     2   (0)| 00:00:01 |
|* 51 |           INDEX RANGE SCAN               | IND0804342_TASK_ID             |     1 |       |     1   (0)| 00:00:01 |
|* 52 |         INDEX RANGE SCAN                 | IDX_PROCESS_INSTANCE_NO_PIID   |     1 |     8 |     1   (0)| 00:00:01 |
|* 53 |        TABLE ACCESS BY INDEX ROWID       | ACT_HI_PROCINST                |     1 |    48 |     1   (0)| 00:00:01 |
|* 54 |         INDEX UNIQUE SCAN                | BIN$QmzHk3AgOs3gUyUUFawTzg==$0 |     1 |       |     0   (0)| 00:00:01 |
|  55 |       VIEW                               | index$_join$_027               |  2137 | 76932 |    30   (4)| 00:00:01 |
|* 56 |        HASH JOIN                         |                                |       |       |            |          |
|* 57 |         INDEX FAST FULL SCAN             | IND0804687_BB12                |  2137 | 76932 |     8   (0)| 00:00:01 |
|  58 |         INDEX FAST FULL SCAN             | IND0804005_FORM_INSTANCE_ID    |  2137 | 76932 |    29   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - access("E"."BUSINESS_KEY_"=SYS_OP_C2C("VBBK"."FORM_INSTANCE_ID"(+)))
  10 - access("RES"."PROC_INST_ID_"="F"."PROC_INST_ID_" AND "RES"."START_TIME_"="F"."MAXTIME")
  14 - access("ASSIGNEE_"=U'01fe715413c542da967398883b2ee701')
  16 - access("K"."ID"='af9afe4128d2423bb6adbaa7a674cddb')
  17 - filter("RES"."END_TIME_" IS NOT NULL)
  18 - access("RES"."ASSIGNEE_"=U'a0efaec2d9b14742aaaf45b6dc5e16e9')
  19 - access("RES"."PROC_DEF_ID_"="D"."ID_")
  20 - filter("H"."PROCESS_DEFINITION_ID"='af9afe4128d2423bb6adbaa7a674cddb')
  21 - access("D"."ID_"=SYS_OP_C2C("ACT_PROCESS_DEFINITION_ID"))
  22 - filter("E"."END_TIME_" IS NOT NULL AND "E"."DELETE_REASON_" IS NULL)
  23 - access("RES"."PROC_INST_ID_"="E"."ID_")
  24 - access("RES"."PROC_INST_ID_"=SYS_OP_C2C("PROCESS_INSTANCE_ID"))
  26 - access(ROWID=ROWID)
  27 - filter("VBBK"."BB12"<>'O')
  29 - access("E"."BUSINESS_KEY_"=SYS_OP_C2C("VBBK"."FORM_INSTANCE_ID"(+)))
  38 - access("K"."ID"='af9afe4128d2423bb6adbaa7a674cddb')
  40 - access(SYS_OP_DESCEND("USER_ID")=HEXTORAW('CC9B9CCECF9AC69BC6CCCAC6CB9DC8C6C6CC9BCDC89B9DCFCDC7CACC9BCBCCCCF
              F') )
       filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("USER_ID"))='3dc10e9d93594b7993d27db02853d433')
  41 - filter("RES"."ASSIGNEE_"=U'a0efaec2d9b14742aaaf45b6dc5e16e9')
  42 - access("RES"."ID_"=SYS_OP_C2C("TT"."TASK_ID"))
  43 - filter("RES"."START_TIME_"="F"."MAXTIME")
  45 - filter("ASSIGNEE_"=U'01fe715413c542da967398883b2ee701')
  46 - access("PROC_INST_ID_"="RES"."PROC_INST_ID_")
  47 - access("RES"."PROC_DEF_ID_"="D"."ID_")
  48 - filter("H"."PROCESS_DEFINITION_ID"='af9afe4128d2423bb6adbaa7a674cddb')
  49 - access("D"."ID_"=SYS_OP_C2C("ACT_PROCESS_DEFINITION_ID"))
  50 - filter("TI"."CONTENT" IS NOT NULL)
  51 - access("TT"."TASK_ID"="TI"."TASK_ID")
  52 - access("RES"."PROC_INST_ID_"=SYS_OP_C2C("PROCESS_INSTANCE_ID"))
  53 - filter("E"."END_TIME_" IS NOT NULL AND "E"."DELETE_REASON_" IS NULL)
  54 - access("RES"."PROC_INST_ID_"="E"."ID_")
  56 - access(ROWID=ROWID)
  57 - filter("VBBK"."BB12"<>'O')


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        823  consistent gets
          0  physical reads
          0  redo size
        525  bytes sent via SQL*Net to client
        524  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
          1  rows processed

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

SACC2017购票8.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月30日前

活动链接>>
TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表