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

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

69

积分

0

好友

13

主题
1#
发表于 2013-9-11 18:31:42 | 查看: 2574| 回复: 1
描述:
在SQL-99中,查询语句增加了WITH子句,可以使相同的子查询在一个sql中只执行一次,另外也可以把复杂的查询简化、增加可读性。
另外,我们知道利用ORACLE的GTT(GLOBAL TEMPORARY)全局临时表、MATERIALIZE VIEW物化视图来提高查询的效率。
其实我们可以通过WITH与未公开的提示(HINT)MATERIALIZE联合使用,在子查询结果记录数不是太多的情况下,取代GTT和物化视图。

materialize这个hint是oracle没有公开的提示,它指示ORACLE CBO在with子句内物化临时表。这在oracle10g之后是没有必要的,但是实际使用with时,如果发现没有被物化,可以用此hint来强制oracle作此处理,使此子查询(临时表)只被处理一次。
结论:
    在一定的情况下,我们可以用with与hint materialize结合的方式取代全局临时表和物化视图来提高查询效率,使用情况如下。
1.      当次查询的结果记录数不是太多的情况下,如果结果记录集比较庞大,还是推荐使用GTT,因为那里面可以指定索引等。
2.      查询值和查询过滤条件中如果含有重复执行的表达式,可以用此方式减少一次计算。
3.      相同子查询被多次使用。
参考page:
http://www.remote-dba.net/oracle ... with_sql_clause.htm
http://www.dba-oracle.com/t_materialize_sql_hint.htm


本人对此表示怀疑 因为从执行计划上看 WITH的视图 都是系统临时表,而且多行SQL都利用了. 又如何得知11G没有物化呢?
WITH本身就是共享子查询的结果, 怎可能会被展开和谓词推进呢?


以下本人小小实验 感觉加了提示反而有点慢. 好像该提示是官方非公开的  还望刘大指点迷津
  1. SQL> with dd as (select /*+materialize */ object_type,owner,object_Id    from dba_objects)
  2.   2  select OBJECT_TYPE, count(*)
  3.   3    from dd
  4.   4   group by OBJECT_TYPE
  5.   5  union all
  6.   6  select owner, count(*) from dd group by owner;

  7. OBJECT_TYPE                      COUNT(*)
  8. ------------------------------ ----------
  9. EDITION                                 1
  10. INDEX PARTITION                       308
  11. CONSUMER GROUP                         25
  12. SEQUENCE                              278
  13. TABLE PARTITION                       283
  14. SCHEDULE                                3
  15. QUEUE                                  35
  16. RULE                                    1
  17. JAVA DATA                             328
  18. PROCEDURE                             179
  19. OPERATOR                               55
  20. LOB PARTITION                           1
  21. DESTINATION                             2
  22. WINDOW                                  9
  23. SCHEDULER GROUP                         4
  24. LOB                                   864
  25. PACKAGE                              1315
  26. PACKAGE BODY                         1255
  27. LIBRARY                               183
  28. PROGRAM                                19
  29. RULE SET                               19
  30. CONTEXT                                 7
  31. TYPE BODY                             237
  32. JAVA RESOURCE                         834
  33. XML SCHEMA                             51
  34. TRIGGER                               611
  35. JOB CLASS                              13
  36. UNDEFINED                               9
  37. DIRECTORY                               3
  38. MATERIALIZED VIEW                       1
  39. TABLE                                2935
  40. INDEX                                3975
  41. SYNONYM                             27807
  42. VIEW                                 5045
  43. FUNCTION                              309
  44. JAVA CLASS                          22920
  45. JAVA SOURCE                             2
  46. INDEXTYPE                               9
  47. CLUSTER                                10
  48. TYPE                                 2786
  49. RESOURCE PLAN                          10

  50. OBJECT_TYPE                      COUNT(*)
  51. ------------------------------ ----------
  52. JOB                                    14
  53. EVALUATION CONTEXT                     12
  54. QBPOSP                                420
  55. OWBSYS_AUDIT                           12
  56. MDSYS                                1509
  57. PUBLIC                              27718
  58. OUTLN                                   9
  59. CTXSYS                                366
  60. OLAPSYS                               719
  61. FLOWS_FILES                            12
  62. OWBSYS                                  2
  63. TEST                                    2
  64. SYSTEM                                529
  65. ORACLE_OCM                              8
  66. EXFSYS                                310
  67. APEX_030200                          2406
  68. SCOTT                                   6
  69. DBSNMP                                 65
  70. ORDSYS                               2532
  71. ORDPLUGINS                             10
  72. SYSMAN                               3491
  73. APPQOSSYS                               3
  74. XDB                                   842
  75. ORDDATA                               248
  76. SYS                                 31224
  77. WMSYS                                 316
  78. SI_INFORMTN_SCHEMA                      8

  79. Executed in 1.781 seconds

  80. SQL>
  81. SQL> with dd as (select object_type,owner,object_Id from dba_objects)
  82.   2  select OBJECT_TYPE, count(*)
  83.   3    from dd
  84.   4   group by OBJECT_TYPE
  85.   5  union all
  86.   6  select owner, count(*) from dd group by owner;

  87. OBJECT_TYPE                      COUNT(*)
  88. ------------------------------ ----------
  89. EDITION                                 1
  90. INDEX PARTITION                       308
  91. CONSUMER GROUP                         25
  92. SEQUENCE                              278
  93. TABLE PARTITION                       283
  94. SCHEDULE                                3
  95. QUEUE                                  35
  96. RULE                                    1
  97. JAVA DATA                             328
  98. PROCEDURE                             179
  99. OPERATOR                               55
  100. LOB PARTITION                           1
  101. DESTINATION                             2
  102. WINDOW                                  9
  103. SCHEDULER GROUP                         4
  104. LOB                                   864
  105. PACKAGE                              1315
  106. PACKAGE BODY                         1255
  107. LIBRARY                               183
  108. PROGRAM                                19
  109. RULE SET                               19
  110. CONTEXT                                 7
  111. TYPE BODY                             237
  112. JAVA RESOURCE                         834
  113. XML SCHEMA                             51
  114. TRIGGER                               611
  115. JOB CLASS                              13
  116. UNDEFINED                               9
  117. DIRECTORY                               3
  118. MATERIALIZED VIEW                       1
  119. TABLE                                2935
  120. INDEX                                3975
  121. SYNONYM                             27807
  122. VIEW                                 5045
  123. FUNCTION                              309
  124. JAVA CLASS                          22920
  125. JAVA SOURCE                             2
  126. INDEXTYPE                               9
  127. CLUSTER                                10
  128. TYPE                                 2786
  129. RESOURCE PLAN                          10

  130. OBJECT_TYPE                      COUNT(*)
  131. ------------------------------ ----------
  132. JOB                                    14
  133. EVALUATION CONTEXT                     12
  134. QBPOSP                                420
  135. OWBSYS_AUDIT                           12
  136. MDSYS                                1509
  137. PUBLIC                              27718
  138. OUTLN                                   9
  139. CTXSYS                                366
  140. OLAPSYS                               719
  141. FLOWS_FILES                            12
  142. OWBSYS                                  2
  143. TEST                                    2
  144. SYSTEM                                529
  145. ORACLE_OCM                              8
  146. EXFSYS                                310
  147. APEX_030200                          2406
  148. SCOTT                                   6
  149. DBSNMP                                 65
  150. ORDSYS                               2532
  151. ORDPLUGINS                             10
  152. SYSMAN                               3491
  153. APPQOSSYS                               3
  154. XDB                                   842
  155. ORDDATA                               248
  156. SYS                                 31224
  157. WMSYS                                 316
  158. SI_INFORMTN_SCHEMA                      8

  159. Executed in 1.5 seconds
复制代码
2#
发表于 2013-9-11 20:21:24
with 不需要加MATERIALIZE

因为本身 :
alter session set "_with_subquery" = materialize/inline/optimizer;"

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-6-1 19:38 , Processed in 0.049231 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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