Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

0

好友

18

主题
1#
发表于 2013-6-13 17:57:28 | 查看: 3328| 回复: 3
本帖最后由 霍俊路 于 2013-6-13 18:01 编辑

您好:
我这边有个SQL语句,生产系统使用的绑定变量,其执时间约40S。如果直接带入数值,执行时间4S. 相差10倍。请帮忙指点一下:
oracle 版本: 10.2.0.4
绑定变量的sql执行计划:
-------------------------------------------------------------------------------------------------------------------------------
Id  | Operation                            | Name                       | Rows  | Bytes |TempSpc| Cost (%CPU)| Pstart| Pstop |
-------------------------------------------------------------------------------------------------------------------------------
   0 | SELECT STATEMENT                     |                            | 44367 |  5242K|       | 98017  (23)|       |       |
   1 |  SORT ORDER BY                       |                            | 44367 |  5242K|    11M| 98017  (23)|       |       |
*  2 |   HASH JOIN RIGHT OUTER              |                            | 44367 |  5242K|       | 96767  (23)|       |       |
   3 |    VIEW                              |                            |  1126 | 21394 |       | 27483   (1)|       |       |
   4 |     SORT GROUP BY                    |                            |  1126 | 55174 |       | 27483   (1)|       |       |
   5 |      VIEW                            |                            |  1126 | 55174 |       | 27483   (1)|       |       |
   6 |       SORT UNIQUE                    |                            |  1126 |   159K|       | 27483   (1)|       |       |
*  7 |        FILTER                        |                            |       |       |       |         |       |       |
*  8 |         HASH JOIN                    |                            |  1126 |   159K|       | 27481   (1)|       |       |
   9 |          TABLE ACCESS FULL           | LOCATION                   |   144 |  3456 |       |  3   (0)|       |       |
* 10 |          HASH JOIN                   |                            |  1128 |   133K|       | 27477   (1)|       |       |
* 11 |           TABLE ACCESS FULL          | SITE                       |   209 | 16511 |       |    36   (6)|       |       |
  12 |           TABLE ACCESS BY INDEX ROWID| SITE_PRIZE_DAILY_REPORT    |     3 |    93 |       |  7   (0)|       |       |
  13 |            NESTED LOOPS              |                            | 21109 |   865K|       | 27439   (1)|       |       |
* 14 |             INDEX FAST FULL SCAN     | SYS_C0074372               |  7969 | 87659 |       |   117   (4)|       |       |
* 15 |             INDEX RANGE SCAN         | PK_SITE_PRIZE_DAILY_REPORT |     4 |       |       |  3   (0)|       |       |
  16 |    MERGE JOIN                        |                            |  8235 |   820K|       | 69283  (32)|       |       |
  17 |     VIEW                             |                            |  8235 |   747K|       | 69279  (32)|       |       |
  18 |      SORT GROUP BY                   |                            |  8235 |   579K|       | 69279  (32)|       |       |
* 19 |       HASH JOIN                      |                            |  8235 |   579K|       | 69274  (32)|       |       |
  20 |        VIEW                          |                            |  7969 | 47814 |       |   121   (7)|       |       |
  21 |         SORT UNIQUE                  |                            |  7969 | 87659 |       |   121   (7)|       |       |
* 22 |          FILTER                      |                            |       |       |       |         |       |       |
* 23 |           INDEX FAST FULL SCAN       | SYS_C0074372               |  7969 | 87659 |       |   117   (4)|       |       |
* 24 |        HASH JOIN                     |                            |  8235 |   530K|       | 69151  (32)|       |       |
* 25 |         HASH JOIN                    |                            |   208 |  7072 |       |    40   (8)|       |       |
  26 |          TABLE ACCESS FULL           | LOCATION                   |   144 |  2448 |       |  3   (0)|       |       |
* 27 |          TABLE ACCESS FULL           | SITE                       |   209 |  3553 |       |    36   (6)|       |       |
  28 |         PARTITION RANGE ITERATOR     |                            | 97070 |  3033K|       | 69103  (32)|   KEY |   KEY |
* 29 |          TABLE ACCESS FULL           | SITE_DAILY_REPORT          | 97070 |  3033K|       | 69103  (32)|   KEY |   KEY |
* 30 |     SORT JOIN                        |                            |   144 |  1296 |       |  4  (25)|       |       |
  31 |      TABLE ACCESS FULL               | LOCATION                   |   144 |  1296 |       |  3   (0)|       |       |
-------------------------------------------------------------------------------------------------------------------------------

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

  2 - access("X"."SITE_NO"="Y"."SITE_NO"(+))
  7 - filter(TO_DATE(:V9,'yyyy-mm-dd:hh24:mi:ss')<=TO_DATE(:V10||' 23:59:59','yyyy-mm-dd:hh24:mi:ss'))
  8 - access("B"."LOCATION_ID"="C"."LOCATION_ID")
10 - access("A"."SITE_ID"="B"."SITE_ID")
11 - filter("B"."SITE_NO" LIKE :V8)
14 - filter(TO_CHAR("GAME_ID") LIKE DECODE(:V6,'All','%',:V7))
15 - access("A"."DRAW_ID"="DRAW_ID" AND "A"."REPORT_DATE">=TO_DATE(:V9,'yyyy-mm-dd:hh24:mi:ss') AND
             "A"."REPORT_DATE"<=TO_DATE(:V10||' 23:59:59','yyyy-mm-dd:hh24:mi:ss'))
19 - access("A"."DRAW_ID"="D"."DRAW_ID")
22 - filter(TO_DATE(:V4,'yyyy-mm-dd:hh24:mi:ss')<=TO_DATE(:V5||' 23:59:59','yyyy-mm-dd:hh24:mi:ss'))
23 - filter(TO_CHAR("GAME_ID") LIKE DECODE(:V1,'All','%',:V2))
24 - access("A"."SITE_ID"="B"."SITE_ID")
25 - access("B"."LOCATION_ID"="C"."LOCATION_ID")
27 - filter("B"."SITE_NO" LIKE :V3)
29 - filter("A"."REPORT_DATE">=TO_DATE(:V4,'yyyy-mm-dd:hh24:mi:ss') AND "A"."REPORT_DATE"<=TO_DATE(:V5||'
             23:59:59','yyyy-mm-dd:hh24:mi:ss'))
30 - access("X"."LOCATION_ID"="W"."LOCATION_ID")
      filter("X"."LOCATION_ID"="W"."LOCATION_ID")

2#
发表于 2013-6-13 17:58:41
由于篇幅限制,分2部分写。
非绑定变量的sql执行计划:

| Id  | Operation                         | Name                       | Rows  |
Bytes |TempSpc| Cost (%CPU)| Pstart| Pstop |
--------------------------------------------------------------------------------
---------------------------------------------
|   0 | SELECT STATEMENT                  |                            | 51059 |
  6033K|       | 19084   (3)|       |       |
|   1 |  SORT ORDER BY                    |                            | 51059 |
  6033K|    13M| 19084   (3)|       |       |
|*  2 |   HASH JOIN RIGHT OUTER           |                            | 51059 |
  6033K|       | 17646   (2)|       |       |
|   3 |    VIEW                           |                            | 11838 |
   219K|       | 16312   (2)|       |       |
|   4 |     SORT GROUP BY                 |                            | 11838 |
   739K|       | 16312   (2)|       |       |
|*  5 |      HASH JOIN                    |                            | 11838 |
   739K|       | 16305   (1)|       |       |
|   6 |       TABLE ACCESS FULL           | LOCATION                   |   144 |
  2448 |       |     3   (0)|       |       |
|*  7 |       HASH JOIN                   |                            | 11864 |
   544K|       | 16301   (1)|       |       |
|*  8 |        TABLE ACCESS FULL          | SITE                       |  4171 |
70907 |       |    36   (6)|       |       |
|   9 |        TABLE ACCESS BY INDEX ROWID| SITE_PRIZE_DAILY_REPORT    |     1 |
    24 |       |     4   (0)|       |       |
|  10 |         NESTED LOOPS              |                            | 11864 |
   347K|       | 16263   (1)|       |       |
|  11 |          VIEW                     |                            |  7969 |
47814 |       |   121   (7)|       |       |
|  12 |           SORT UNIQUE             |                            |  7969 |
87659 |       |   121   (7)|       |       |
|* 13 |            INDEX FAST FULL SCAN   | SYS_C0074372               |  7969 |
87659 |       |   117   (4)|       |       |
|* 14 |          INDEX RANGE SCAN         | PK_SITE_PRIZE_DAILY_REPORT |     1 |
       |       |     3   (0)|       |       |
|  15 |    MERGE JOIN                     |                            | 17908 |
  1783K|       |  1331  (14)|       |       |
|  16 |     VIEW                          |                            | 17908 |
  1626K|       |  1327  (14)|       |       |
|  17 |      SORT GROUP BY                |                            | 17908 |
  1276K|  2824K|  1327  (14)|       |       |
|* 18 |       HASH JOIN                   |                            | 17908 |
  1276K|       |  1003  (17)|       |       |
|  19 |        VIEW                       |                            |  7969 |
47814 |       |   121   (7)|       |       |
|  20 |         SORT UNIQUE               |                            |  7969 |
87659 |       |   121   (7)|       |       |
|* 21 |          INDEX FAST FULL SCAN     | SYS_C0074372               |  7969 |
87659 |       |   117   (4)|       |       |
|* 22 |        HASH JOIN                  |                            | 17908 |
  1171K|       |   878  (18)|       |       |
|* 23 |         HASH JOIN                 |                            |  4162 |
   138K|       |    40   (8)|       |       |
|  24 |          TABLE ACCESS FULL        | LOCATION                   |   144 |
  2448 |       |     3   (0)|       |       |
|* 25 |          TABLE ACCESS FULL        | SITE                       |  4171 |
70907 |       |    36   (6)|       |       |
|  26 |         PARTITION RANGE SINGLE    |                            | 17947 |
   578K|       |   836  (18)|   114 |   114 |
|* 27 |          TABLE ACCESS FULL        | SITE_DAILY_REPORT          | 17947 |
   578K|       |   836  (18)|   114 |   114 |
|* 28 |     SORT JOIN                     |                            |   144 |
  1296 |       |     4  (25)|       |       |
|  29 |      TABLE ACCESS FULL            | LOCATION                   |   144 |
  1296 |       |     3   (0)|       |       |
--------------------------------------------------------------------------------
---------------------------------------------

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

   2 - access("X"."SITE_NO"="Y"."SITE_NO"(+))
   5 - access("B"."LOCATION_ID"="C"."LOCATION_ID")
   7 - access("A"."SITE_ID"="B"."SITE_ID")
   8 - filter("B"."SITE_NO" LIKE '%')
  13 - filter(TO_CHAR("GAME_ID") LIKE '%')
  14 - access("A"."DRAW_ID"="D"."DRAW_ID" AND "A"."REPORT_DATE">=TO_DATE('2013-0
5-14 00:00:00', 'yyyy-mm-dd
              hh24:mi:ss') AND "A"."REPORT_DATE"<=TO_DATE('2013-05-14 23:59:59',
'yyyy-mm-dd hh24:mi:ss'))
  18 - access("A"."DRAW_ID"="D"."DRAW_ID")
  21 - filter(TO_CHAR("GAME_ID") LIKE '%')
  22 - access("A"."SITE_ID"="B"."SITE_ID")
  23 - access("B"."LOCATION_ID"="C"."LOCATION_ID")
  25 - filter("B"."SITE_NO" LIKE '%')
  27 - filter("A"."REPORT_DATE"<=TO_DATE('2013-05-14 23:59:59', 'yyyy-mm-dd hh24
:mi:ss') AND
              "A"."REPORT_DATE">=TO_DATE('2013-05-14 00:00:00', 'yyyy-mm-dd hh24
:mi:ss'))
  28 - access("X"."LOCATION_ID"="W"."LOCATION_ID")
       filter("X"."LOCATION_ID"="W"."LOCATION_ID")

经对比,使用非绑定变量,过滤条件会先执行,然后连接。如果使用绑定变量,过滤条件会在表连接后执行filter操作。请帮忙指点一下,能否在使用绑定变量时,先过滤,然后再连接。谢谢。

回复 只看该作者 道具 举报

3#
发表于 2013-6-13 18:03:23
考虑使用sql profile 或者11g的baseline 固定执行计划

回复 只看该作者 道具 举报

4#
发表于 2013-6-13 18:05:49
yu5782647 发表于 2013-6-13 18:03
考虑使用sql profile 或者11g的baseline 固定执行计划

非常感谢。我的版本是10.2.0.4。我试试sql profile

回复 只看该作者 道具 举报

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

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-5-8 23:50 , Processed in 0.048564 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569