设为首页 收藏本站
查看: 508|回复: 0

[经验分享] Oracle with as (hint inline materialize)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-21 09:41:02 | 显示全部楼层 |阅读模式
  • 测试数据:

1
2
3
4
5
6
SQL> create table test1 as  select * from dba_objects;
Table created.
SQL> create table test2 as  select * from user_objects;
Table created.
SQL> create table test3 as  select * from dba_objects;
Table created.



收集统计信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
BEGIN
  DBMS_STATS.GATHER_TABLE_STATS(ownname          => 'SCOTT',
                                tabname          => 'TEST1',
                                estimate_percent => 100,
                                method_opt       => 'for  columns owner size repeat',
                                no_invalidate    => FALSE,
                                degree           => 4,
                                granularity      => 'ALL',
                                cascade          => TRUE);
  END;
   /
PL/SQL procedure successfully completed.

SQL> with t as(select t1.* from test1 t1,test2 t2 where t1.object_id=t2.object_id) select * from t,test3 t3 where t.object_id=t3.object_id;

11 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2878150729

-------------------------------------------------------------------------------------
| Id  | Operation       | Name  | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |     | 86999 |  16M|      |  1605   (1)| 00:00:20 |
|*  1 |  HASH JOIN        |       | 86999 |  16M|      |  1605   (1)| 00:00:20 |
|   2 |   TABLE ACCESS FULL | TEST2 |    13 |  65 |     |     3   (0)| 00:00:01 |
|*  3 |   HASH JOIN      |       | 86999 |  16M|  9352K|  1602   (1)| 00:00:20 |
|   4 |    TABLE ACCESS FULL| TEST1 | 86997 |  8325K|       |   347   (1)| 00:00:05 |
|   5 |    TABLE ACCESS FULL| TEST3 | 86999 |  8326K|       |   347   (1)| 00:00:05 |
-------------------------------------------------------------------------------------

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

   1 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")
   3 - access("T1"."OBJECT_ID"="T3"."OBJECT_ID")


Statistics
----------------------------------------------------------
      0  recursive calls
      0  db block gets
       2491  consistent gets
       2484  physical reads
      0  redo size
       3736  bytes sent via SQL*Net to client
    523  bytes received via SQL*Net from client
      2  SQL*Net roundtrips to/from client
      0  sorts (memory)
      0  sorts (disk)
     11  rows processed
      

加 materialize hint,强制oracle生成临时表
SQL> with t as(select /*+ materialize */t1.* from test1 t1,test2 t2 where t1.object_id=t2.object_id) select * from t,test3 t3 where t.object_id=t3.object_id;

11 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3288461629

----------------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name              | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |                |   582M|   165G|       |  3963    (40)| 00:00:48 |
|   1 |  TEMP TABLE TRANSFORMATION |                  |       |       |       |        |          |
|   2 |   LOAD AS SELECT      | SYS_TEMP_0FD9D661A_155646 |       |       |       |      |          |
|*  3 |    HASH JOIN           |                | 86997 |  8750K|       |   351  (1)| 00:00:05 |
|   4 |     TABLE ACCESS FULL       | TEST2             |    13 |    65 |       |     3  (0)| 00:00:01 |
|   5 |     TABLE ACCESS FULL       | TEST1             | 86997 |  8325K|       |   347  (1)| 00:00:05 |
|*  6 |   HASH JOIN         |                |   582M|   165G|  9352K|  3613 (44)| 00:00:44 |
|   7 |    TABLE ACCESS FULL     | TEST3             | 86999 |  8326K|       |   347  (1)| 00:00:05 |
|   8 |    VIEW           |                | 86997 |    17M|       |   332    (1)| 00:00:04 |
|   9 |     TABLE ACCESS FULL       | SYS_TEMP_0FD9D661A_155646 | 86997 |  8750K|       |   332    (1)| 00:00:04 |
----------------------------------------------------------------------------------------------------------------

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

   3 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")
   6 - access("T"."OBJECT_ID"="T3"."OBJECT_ID")


Statistics
----------------------------------------------------------
     55  recursive calls
      8  db block gets
       2525  consistent gets
       2485  physical reads
    656  redo size
       3736  bytes sent via SQL*Net to client
    523  bytes received via SQL*Net from client
      2  SQL*Net roundtrips to/from client
      3  sorts (memory)
      0  sorts (disk)
     11  rows processed



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-116584-1-1.html 上篇帖子: racle database 11.2.0.3.0 升级至 11.2.0.3.1 下篇帖子: oracle rman 跨版本恢复 11.2.0.3- 11.2.0.4 Oracle
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表