Transformation之Non-correlated(無關聯子查詢)=any的transform【五】

哎呀我的天吶發表於2015-02-27

                   Join
Row source
Inner join
Outer join
Left outer-join:L.c=R.c(+)
Semi-join :一個邏輯概念,但是寫不出semi-join沒有一個表達方式,通常exist、in這兩種語法會變成semi-join ,所謂半連線就是用一個結果集過濾另一個結果集,但是這種過濾的方式使用join的方式過濾。一般情況如果找到一個合適的結果就不往下找了,這就是semi-join
Anti-join :not exists、not in

Nested loop NL
Sort merge joiin -SM  笛卡爾屬於這種
Hash join Hj 

子查詢
Sbuquery   在query/DML內部的查詢  in (select.. .. )
Correlated 相關子查詢     列>... ...
Non-correlated 無關子查詢 你完全不能把這兩個表之間做什麼關係
Scalar view 標量 子查詢  select子句裡面帶的子查詢 通常效能不好

In-line view 

無關聯子查詢transformaton
=any 符合這個條件的就可以。有的時候這種無關聯的成本有時候比較高,因為得先吧把any中的全部查出來,再做比較,其實oracle會給你做成這種:

執行計劃是semi-join

點選( 此處 )摺疊或開啟

  1. set line 200

  2. set pages 200

  3. drop table emp1 ;

  4. create table emp1 as select * from emp ;

  5. alter session set events '10053 trace name context forever ,level 1';

  6. select / * + ^ ^ ^ ^ * / * from emp where hiredate = any ( select hiredate from emp1 where deptno = 20 ) ;

  7. alter session set events '10053 trace name context off';


  8. / *

  9. SELECT EMP . *

  10. FROM SCOTT . EMP1 EMP1 , SCOTT . EMP EMP

  11. WHERE EMP . HIREDATE = EMP1 . HIREDATE AND EMP1 . DEPTNO = 20

  12. * /



點選( 此處 )摺疊或開啟

  1. Registered qb : SEL$1 0x873b6678 ( PARSER )

  2. - - - - - - - - - - - - - - - - - - - - -

  3. QUERY BLOCK SIGNATURE

  4. - - - - - - - - - - - - - - - - - - - - -

  5.   signature ( ) : qb_name = SEL$1 nbfros = 1 flg =

  6.     fro ( ) : flg = 4 objn = 75335 hint_alias = "EMP" @ "SEL$1"


  7. Registered qb : SEL$2 0x873b14a0 ( PARSER )

  8. - - - - - - - - - - - - - - - - - - - - -

  9. QUERY BLOCK SIGNATURE

  10. - - - - - - - - - - - - - - - - - - - - -

  11.   signature ( ) : qb_name = SEL$2 nbfros = 1 flg =

  12.     fro ( ) : flg = 4 objn = 78917 hint_alias = "EMP1" @ "SEL$2"


  13. SPM : statement not found in SMB


  14. * * * * * * * * * * * * * * * * * * * * * * * * * *

  15. Automatic degree of parallelism ( ADOP )

  16. * * * * * * * * * * * * * * * * * * * * * * * * * *

  17. Automatic degree of parallelism is disabled : Parameter .


  18. PM : Considering predicate move - around in query block SEL$1 ( # )

  19. * * * * * * * * * * * * * * * * * * * * * * * * * *

  20. Predicate Move - Around ( PM )

  21. * * * * * * * * * * * * * * * * * * * * * * * * * *

  22. OPTIMIZER INFORMATION


  23. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  24. - - - - - Current SQL Statement for this session ( sql_id = 0rbab21pk95av ) - - - - -

  25. select / * + ^ ^ ^ ^ * / * from emp where hiredate = any ( select hiredate from emp1 where deptno = 20 )

  26. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  27. Legend

  28. The following abbreviations are used by optimizer trace .

  29. CBQT - cost - based query transformation

  30. JPPD - join predicate push - down

  31. OJPPD - old - style ( non - cost - based ) JPPD

  32. FPD - filter push - down

  33. PM - predicate move - around

  34. CVM - complex view merging

  35. SPJ - select - project - join

  36. SJC - set join conversion

  37. SU - subquery unnesting

  38. OBYE - order by elimination

  39. OST - old style star transformation

  40. ST - new ( cbqt ) star transformation

  41. CNT - count ( col ) to count ( * ) transformation

  42. JE - Join Elimination

  43. JF - join factorization

  44. SLP - select list pruning

  45. DP - distinct placement

  46. qb - query block

  47. LB - leaf blocks

  48. DK - distinct keys

  49. LB/K - average number of leaf blocks per key

  50. DB/K - average number of data blocks per key

  51. CLUF - clustering factor

  52. NDV - number of distinct values

  53. Resp - response cost

  54. Card - cardinality

  55. Resc - resource cost

  56. NL - nested loops ( join )

  57. SM - sort merge ( join )

  58. HA - hash ( join )

  59. CPUSPEED - CPU Speed

  60. IOTFRSPEED - I/O transfer speed

  61. IOSEEKTIM - I/O seek time

  62. SREADTIM - average single block read time

  63. MREADTIM - average multiblock read time

  64. MBRC - average multiblock read count

  65. MAXTHR - maximum I/O system throughput

  66. SLAVETHR - average slave I/O throughput

  67. dmeth - distribution method

  68.   1 : no partitioning required

  69.   2 : value partitioned

  70.   4 : right is random ( round - robin )

  71.   128 : left is random ( round - robin )

  72.   8 : broadcast right and partition left

  73.   16 : broadcast left and partition right

  74.   32 : partition left using partitioning of right

  75.   64 : partition right using partitioning of left

  76.   256 : run the join in serial

  77.   0 : invalid distribution method

  78. sel - selectivity

  79. ptn - partition

  80. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  81. PARAMETERS USED BY THE OPTIMIZER

  82. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  83.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  84.   PARAMETERS WITH ALTERED VALUES

  85.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *




  86.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  87.   PARAMETERS IN OPT_PARAM HINT

  88.    * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  89. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  90. Column Usage Monitoring is ON : tracking level = 1

  91. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


  92. Considering Query Transformations on query block SEL$1 ( # )

  93. * * * * * * * * * * * * * * * * * * * * * * * * * *

  94. Query transformations ( QT )

  95. * * * * * * * * * * * * * * * * * * * * * * * * * *

  96. JF : Checking validity of join factorization for query block SEL$2 ( # )

  97. JF : Bypassed : not a UNION or UNION - ALL query block .

  98. ST : not valid since star transformation parameter is FALSE

  99. TE : Checking validity of table expansion for query block SEL$2 ( # )

  100. TE : Bypassed : No partitioned table in query block .

  101. CBQT : Validity checks passed for 0rbab21pk95av .

  102. CSE : Considering common sub - expression elimination in query block SEL$1 ( # )

  103. * * * * * * * * * * * * * * * * * * * * * * * * *

  104. Common Subexpression elimination ( CSE )

  105. * * * * * * * * * * * * * * * * * * * * * * * * *

  106. CSE : Considering common sub - expression elimination in query block SEL$2 ( # )

  107. * * * * * * * * * * * * * * * * * * * * * * * * *

  108. Common Subexpression elimination ( CSE )

  109. * * * * * * * * * * * * * * * * * * * * * * * * *

  110. CSE : CSE not performed on query block SEL$2 ( # ) .

  111. CSE : CSE not performed on query block SEL$1 ( # ) .

  112. OBYE : Considering Order - by Elimination from view SEL$1 ( # )

  113. * * * * * * * * * * * * * * * * * * * * * * * * * * *

  114. Order - by elimination ( OBYE )

  115. * * * * * * * * * * * * * * * * * * * * * * * * * * *

  116. OBYE : OBYE bypassed : no order by to eliminate .

  117. OJE : Begin : find best directive for query block SEL$1 ( # )

  118. OJE : End : finding best directive for query block SEL$1 ( # )

  119. OJE : Begin : find best directive for query block SEL$2 ( # )

  120. OJE : End : finding best directive for query block SEL$2 ( # )

  121. query block SEL$1 ( # ) unchanged

  122. Considering Query Transformations on query block SEL$1 ( # )

  123. * * * * * * * * * * * * * * * * * * * * * * * * * *

  124. Query transformations ( QT )

  125. * * * * * * * * * * * * * * * * * * * * * * * * * *

  126. CSE : Considering common sub - expression elimination in query block SEL$1 ( # )

  127. * * * * * * * * * * * * * * * * * * * * * * * * *

  128. Common Subexpression elimination ( CSE )

  129. * * * * * * * * * * * * * * * * * * * * * * * * *

  130. CSE : Considering common sub - expression elimination in query block SEL$2 ( # )

  131. * * * * * * * * * * * * * * * * * * * * * * * * *

  132. Common Subexpression elimination ( CSE )

  133. * * * * * * * * * * * * * * * * * * * * * * * * *

  134. CSE : CSE not performed on query block SEL$2 ( # ) .

  135. CSE : CSE not performed on query block SEL$1 ( # ) .

  136. query block SEL$1 ( # ) unchanged

  137. apadrv - start sqlid = 841411239277270363

  138.    :

  139.      call ( in - use = 1832 , alloc = 16344 ) , compile ( in - use = 64568 , alloc = 66920 ) , execution ( in - use = 3456 , alloc = 4032 )


  140. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  141. Peeked values of the binds in SQL statement

  142. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


  143. CBQT : Considering cost - based transformation on query block SEL$1 ( # )

  144. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  145. COST - BASED QUERY TRANSFORMATIONS

  146. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  147. FPD : Considering simple filter push ( pre rewrite ) in query block SEL$2 ( # )

  148. FPD : Current where clause predicates "EMP1" . "DEPTNO" = 20


  149. FPD : Considering simple filter push ( pre rewrite ) in query block SEL$1 ( # )

  150. FPD : Current where clause predicates "EMP" . "HIREDATE" = ANY ( SELECT "EMP1" . "HIREDATE" FROM "EMP1" "EMP1" )


  151. OBYE : Considering Order - by Elimination from view SEL$1 ( # )

  152. * * * * * * * * * * * * * * * * * * * * * * * * * * *

  153. Order - by elimination ( OBYE )

  154. * * * * * * * * * * * * * * * * * * * * * * * * * * *

  155. OBYE : OBYE bypassed : no order by to eliminate .

  156. Considering Query Transformations on query block SEL$1 ( # )

  157. * * * * * * * * * * * * * * * * * * * * * * * * * *

  158. Query transformations ( QT )

  159. * * * * * * * * * * * * * * * * * * * * * * * * * *

  160. CSE : Considering common sub - expression elimination in query block SEL$1 ( # )

  161. * * * * * * * * * * * * * * * * * * * * * * * * *

  162. Common Subexpression elimination ( CSE )

  163. * * * * * * * * * * * * * * * * * * * * * * * * *

  164. CSE : Considering common sub - expression elimination in query block SEL$2 ( # )

  165. * * * * * * * * * * * * * * * * * * * * * * * * *

  166. Common Subexpression elimination ( CSE )

  167. * * * * * * * * * * * * * * * * * * * * * * * * *

  168. CSE : CSE not performed on query block SEL$2 ( # ) .

  169. CSE : CSE not performed on query block SEL$1 ( # ) .

  170. kkqctdrvTD - start on query block SEL$1 ( # )

  171. kkqctdrvTD - start : :

  172.      call ( in - use = 1832 , alloc = 16344 ) , compile ( in - use = 107016 , alloc = 110912 ) , execution ( in - use = 3456 , alloc = 4032 )


  173. Registered qb : SEL$1 0x8741cf18 ( COPY SEL$1 )

  174. - - - - - - - - - - - - - - - - - - - - -

  175. QUERY BLOCK SIGNATURE

  176. - - - - - - - - - - - - - - - - - - - - -

  177.   signature ( ) : NULL

  178. Registered qb : SEL$2 0x8741db40 ( COPY SEL$2 )

  179. - - - - - - - - - - - - - - - - - - - - -

  180. QUERY BLOCK SIGNATURE

  181. - - - - - - - - - - - - - - - - - - - - -

  182.   signature ( ) : NULL

  183. * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  184. Cost - Based Subquery Unnesting

  185. * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  186. SU : Unnesting query blocks in query block SEL$1 ( # 1 ) that are valid to unnest .

  187. Subquery removal for query block SEL$2 ( # 2 )

  188. RSW : Not valid for subquery removal SEL$2 ( # 2 )

  189. Subquery unchanged .

  190. Subquery Unnesting on query block SEL$1 ( # 1 ) SU : Performing unnesting that does not require costing .

  191. SU : Considering subquery unnest on query block SEL$1 ( # 1 ) .

  192. SU : Checking validity of unnesting subquery SEL$2 ( # 2 )

  193. SU : Passed validity checks .

  194. SU : Transforming ANY subquery to a join .

  195. Registered qb : SEL$5DA710D3 0x8741cf18 ( SUBQUERY UNNEST SEL$1 ; SEL$2 )

  196. - - - - - - - - - - - - - - - - - - - - -

  197. QUERY BLOCK SIGNATURE

  198. - - - - - - - - - - - - - - - - - - - - -

  199.   signature ( ) : qb_name = SEL$5DA710D3 nbfros = 2 flg =

  200.     fro ( ) : flg = 0 objn = 75335 hint_alias = \ "EMP\" @ \ "SEL$1\"

  201.     fro ( 1 ) : flg = 0 objn = 78917 hint_alias = \ "EMP1\" @ \ "SEL$2\"


  202. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  203. Cost - Based Complex View Merging

  204. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  205. CVM : Finding query blocks in query block SEL$5DA710D3 ( # 1 ) that are valid to merge .

  206. OJE : Begin : find best directive for query block SEL$5DA710D3 ( # 1 )

  207. OJE : End : finding best directive for query block SEL$5DA710D3 ( # 1 )

  208. kkqctdrvTD - cleanup : transform ( in - use = 5064 , alloc = 8392 ) :

  209.      call ( in - use = 2512 , alloc = 16344 ) , compile ( in - use = 125432 , alloc = 135984 ) , execution ( in - use = 3496 , alloc = 4032 )


  210. kkqctdrvTD - end :

  211.      call ( in - use = 2512 , alloc = 16344 ) , compile ( in - use = 117456 , alloc = 135984 ) , execution ( in - use = 3496 , alloc = 4032 )


  212. Subquery removal for query block SEL$2 ( # 2 )

  213. RSW : Not valid for subquery removal SEL$2 ( # 2 )

  214. Subquery unchanged .

  215. SU : Transforming ANY subquery to a join .

  216. SJC : Considering set - join conversion in query block SEL$5DA710D3 ( # 1 )

  217. * * * * * * * * * * * * * * * * * * * * * * * * *

  218. Set - Join Conversion ( SJC )

  219. * * * * * * * * * * * * * * * * * * * * * * * * *

  220. SJC : not performed

  221. OJE : Begin : find best directive for query block SEL$5DA710D3 ( # 1 )

  222. OJE : End : finding best directive for query block SEL$5DA710D3 ( # 1 )

  223. JE : Considering Join Elimination on query block SEL$5DA710D3 ( # 1 )

  224. * * * * * * * * * * * * * * * * * * * * * * * * *

  225. Join Elimination ( JE )

  226. * * * * * * * * * * * * * * * * * * * * * * * * *

  227. SQL : * * * * * * * UNPARSED QUERY IS * * * * * * *

  228. SELECT EMP . EMPNO   EMPNO , EMP . ENAME   ENAME , EMP . JOB   JOB , EMP . MGR   MGR , EMP . HIREDATE   HIREDATE , EMP . SAL   SAL , EMP . COMM   COMM , EMP . DEPTNO   DEPTNO  FROM SCOTT . EMP1   EMP1 , SCOTT . EMP   EMP  WHERE EMP . HIREDATE = EMP1 . HIREDATE   AND EMP1 . DEPTNO = 20

  229. JE : cfro : EMP1 objn : 75335 col# : 5 dfro : EMP dcol# : 5

  230. JE : cfro : EMP1 objn : 75335 col# : 5 dfro : EMP dcol# : 5

  231. JE : cfro : EMP objn : 78917 col# : 5 dfro : EMP1 dcol# : 5

  232. SQL : * * * * * * * UNPARSED QUERY IS * * * * * * *

  233. SELECT EMP . EMPNO   EMPNO , EMP . ENAME   ENAME , EMP . JOB   JOB , EMP . MGR   MGR , EMP . HIREDATE   HIREDATE , EMP . SAL   SAL , EMP . COMM   COMM , EMP . DEPTNO   DEPTNO  FROM SCOTT . EMP1   EMP1 , SCOTT . EMP   EMP  WHERE EMP . HIREDATE = EMP1 . HIREDATE   AND EMP1 . DEPTNO = 20

  234. Query block SEL$5DA710D3 ( # 1 ) unchanged

  235. PM : Considering predicate move - around in query block SEL$5DA710D3 ( # 1 )

  236. * * * * * * * * * * * * * * * * * * * * * * * * * *

  237. Predicate Move - Around ( PM )

  238. * * * * * * * * * * * * * * * * * * * * * * * * * *

  239. PM : PM bypassed : Outer query contains no views .

  240. PM : PM bypassed : Outer query contains no views .

  241. kkqctdrvTD - start on query block SEL$5DA710D3 ( # 1 )

  242. kkqctdrvTD - start : :

  243.      call ( in - use = 3568 , alloc = 16344 ) , compile ( in - use = 119176 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  244. kkqctdrvTD - cleanup : transform ( in - use = , alloc = ) :

  245.      call ( in - use = 3568 , alloc = 16344 ) , compile ( in - use = 120008 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  246. kkqctdrvTD - end :

  247.      call ( in - use = 3568 , alloc = 16344 ) , compile ( in - use = 120528 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  248. kkqctdrvTD - start on query block SEL$5DA710D3 ( # 1 )

  249. kkqctdrvTD - start : :

  250.      call ( in - use = 3568 , alloc = 16344 ) , compile ( in - use = 120528 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  251. kkqctdrvTD - cleanup : transform ( in - use = , alloc = ) :

  252.      call ( in - use = 3568 , alloc = 16344 ) , compile ( in - use = 121344 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  253. kkqctdrvTD - end :

  254.      call ( in - use = 3568 , alloc = 16344 ) , compile ( in - use = 121864 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  255. kkqctdrvTD - start on query block SEL$5DA710D3 ( # 1 )

  256. kkqctdrvTD - start : :

  257.      call ( in - use = 3568 , alloc = 16344 ) , compile ( in - use = 121864 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  258. TE : Checking validity of table expansion for query block SEL$5DA710D3 ( # 1 )

  259. TE : Bypassed : No partitioned table in query block .

  260. kkqctdrvTD - cleanup : transform ( in - use = , alloc = ) :

  261.      call ( in - use = 3568 , alloc = 16344 ) , compile ( in - use = 122672 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  262. kkqctdrvTD - end :

  263.      call ( in - use = 3568 , alloc = 16344 ) , compile ( in - use = 123192 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  264. TE : Checking validity of table expansion for query block SEL$5DA710D3 ( # 1 )

  265. TE : Bypassed : No partitioned table in query block .

  266. ST : Query in kkqstardrv : * * * * * * * UNPARSED QUERY IS * * * * * * *

  267. SELECT EMP . EMPNO   EMPNO , EMP . ENAME   ENAME , EMP . JOB   JOB , EMP . MGR   MGR , EMP . HIREDATE   HIREDATE , EMP . SAL   SAL , EMP . COMM   COMM , EMP . DEPTNO   DEPTNO  FROM SCOTT . EMP1   EMP1 , SCOTT . EMP   EMP  WHERE EMP . HIREDATE = EMP1 . HIREDATE   AND EMP1 . DEPTNO = 20

  268. ST : not valid since star transformation parameter is FALSE

  269. kkqctdrvTD - start on query block SEL$5DA710D3 ( # 1 )

  270. kkqctdrvTD - start : :

  271.      call ( in - use = 3664 , alloc = 16344 ) , compile ( in - use = 123192 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  272. JF : Checking validity of join factorization for query block SEL$5DA710D3 ( # 1 )

  273. JF : Bypassed : not a UNION or UNION - ALL query block .

  274. kkqctdrvTD - cleanup : transform ( in - use = , alloc = ) :

  275.      call ( in - use = 3664 , alloc = 16344 ) , compile ( in - use = 124000 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  276. kkqctdrvTD - end :

  277.      call ( in - use = 3664 , alloc = 16344 ) , compile ( in - use = 124520 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  278. JPPD : Considering Cost - based predicate pushdown from query block SEL$5DA710D3 ( # 1 )

  279. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  280. Cost - based predicate pushdown ( JPPD )

  281. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  282. kkqctdrvTD - start on query block SEL$5DA710D3 ( # 1 )

  283. kkqctdrvTD - start : :

  284.      call ( in - use = 3664 , alloc = 16344 ) , compile ( in - use = 124520 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  285. kkqctdrvTD - cleanup : transform ( in - use = , alloc = ) :

  286.      call ( in - use = 3664 , alloc = 16344 ) , compile ( in - use = 125328 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  287. kkqctdrvTD - end :

  288.      call ( in - use = 3664 , alloc = 16344 ) , compile ( in - use = 125872 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  289. JPPD : Applying transformation directives

  290. query block SEL$1 transformed to SEL$5DA710D3 ( # 1 )

  291. FPD : Considering simple filter push in query block SEL$5DA710D3 ( # 1 )

  292. EMP . HIREDATE = EMP1 . HIREDATE   AND EMP1 . DEPTNO = 20

  293. try to generate transitive predicate from check constraints for query block SEL$5DA710D3 ( # 1 )

  294. finally : EMP . HIREDATE = EMP1 . HIREDATE   AND EMP1 . DEPTNO = 20                 finally關鍵字,複雜的子查詢會有多個finally,因為是針對query block優化的


  295. Final query after transformations : * * * * * * * UNPARSED QUERY IS * * * * * * *

  296. SELECT EMP . EMPNO   EMPNO , EMP . ENAME   ENAME , EMP . JOB   JOB , EMP . MGR   MGR , EMP . HIREDATE   HIREDATE , EMP . SAL   SAL , EMP . COMM   COMM , EMP . DEPTNO   DEPTNO  FROM SCOTT . EMP1   EMP1 , SCOTT . EMP   EMP  WHERE EMP . HIREDATE = EMP1 . HIREDATE   AND EMP1 . DEPTNO = 20

  297. kkoqbc : optimizing query block SEL$5DA710D3 ( # 1 )

  298.         

  299.          :

  300.      call ( in - use = 3952 , alloc = 16344 ) , compile ( in - use = 127176 , alloc = 135984 ) , execution ( in - use = 3752 , alloc = 4032 )


  301. kkoqbc - subheap ( create addr = 0x2b02873bfaa0 )

  302. * * * * * * * * * * * * * * * *

  303. QUERY BLOCK TEXT

  304. * * * * * * * * * * * * * * * *

  305. select / * + ^ ^ ^ ^ * / * from emp where hiredate = any ( select hiredate from emp1 where deptno = 20 )

  306. - - - - - - - - - - - - - - - - - - - - -

  307. QUERY BLOCK SIGNATURE

  308. - - - - - - - - - - - - - - - - - - - - -

  309. signature ( optimizer ) : qb_name = SEL$5DA710D3 nbfros = 2 flg =

  310.   fro ( ) : flg = 0 objn = 75335 hint_alias = "EMP" @ "SEL$1"

  311.   fro ( 1 ) : flg = 0 objn = 78917 hint_alias = "EMP1" @ "SEL$2"


  312. - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  313. SYSTEM STATISTICS INFORMATION

  314. - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  315.   Using NOWORKLOAD Stats

  316.   CPUSPEEDNW : 1752 millions instructions/sec ( default is 100 )

  317.   IOTFRSPEED : 4096 bytes per millisecond ( default is 4096 )

  318.   IOSEEKTIM : 10 milliseconds ( default is 10 )

  319.   MBRC : NO VALUE blocks ( default is 8 )


  320. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  321. BASE STATISTICAL INFORMATION

  322. * * * * * * * * * * * * * * * * * * * * * * *

  323. Table Stats : :

  324.   Table : EMP  Alias : EMP

  325.     #Rows : 14  #Blks : 5  AvgRowLen : 38 . 00  ChainCnt : 0 . 00

  326.   Column ( # 5 ) : HIREDATE (

  327.     AvgLen : 8 NDV : 13 Nulls : 0 Density : 0 . 076923 Min : 2444591 Max : 2446939

  328. Index Stats : :

  329.   Index : PK_EMP  Col# : 1

  330.     LVLS : 0  #LB : 1  #DK : 14  LB/K : 1 . 00  DB/K : 1 . 00  CLUF : 1 . 00

  331. * * * * * * * * * * * * * * * * * * * * * * *

  332. Table Stats : :

  333.   Table : EMP1  Alias : EMP1 ( NOT ANALYZED )

  334.     #Rows : 327  #Blks : 4  AvgRowLen : 100 . 00  ChainCnt : 0 . 00

  335.   Column ( # 5 ) : HIREDATE ( NO STATISTICS ( using defaults )

  336.     AvgLen : 9 NDV : 10 Nulls : 0 Density : 0 . 097859

  337. Access path analysis for EMP1

  338. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  339. SINGLE TABLE ACCESS PATH

  340.   Single Table Cardinality Estimation for EMP1 [ EMP1 ]


  341. * * * 2015 - 02 - 27 01 : 51 : 40 . 125

  342. * * Performing dynamic sampling initial checks . * *

  343.   Column ( # 8 ) : DEPTNO ( NO STATISTICS ( using defaults )

  344.     AvgLen : 13 NDV : 10 Nulls : 0 Density : 0 . 097859

  345. * * Dynamic sampling initial checks returning TRUE ( level = 2 ) .

  346. * * Dynamic sampling updated table stats . : blocks = 4


  347. * * * 2015 - 02 - 27 01 : 51 : 40 . 126

  348. * * Generated dynamic sampling query :

  349.     query text :

  350. SELECT / * OPT_DYN_SAMP * / / * + ALL_ROWS IGNORE_WHERE_CLAUSE NO_PARALLEL ( SAMPLESUB ) opt_param ( 'parallel_execution_enabled' , 'false' ) NO_PARALLEL_INDEX ( SAMPLESUB ) NO_SQL_TUNE * / NVL ( SUM ( C1 ) , ) , NVL ( SUM ( C2 ) , ) , COUNT ( DISTINCT C3 ) , NVL ( SUM ( CASE WHEN C3 IS NULL THEN 1 ELSE 0 END ) , ) FROM ( SELECT / * + IGNORE_WHERE_CLAUSE NO_PARALLEL ( "EMP1" ) FULL ( "EMP1" ) NO_PARALLEL_INDEX ( "EMP1" ) * / 1 AS C1 , CASE WHEN EMP1 . DEPTNO = 20 THEN 1 ELSE 0 END AS C2 , "EMP1" . "HIREDATE" AS C3 FROM "SCOTT" . "EMP1" "EMP1" ) SAMPLESUB


  351. * * * 2015 - 02 - 27 01 : 51 : 40 . 127

  352. * * Executed dynamic sampling query :

  353.     level : 2

  354.     sample pct . : 100 . 000000

  355.     actual sample size : 14

  356.     filtered sample card . : 5

  357.     orig . card . : 327

  358.     block cnt . table stat . : 4

  359.     block cnt . for sampling : 4

  360.     max . sample block cnt . : 64

  361.     sample block cnt . : 4

  362.     ndv C3 : 13

  363.         scaled : 13 . 00

  364.     nulls C4 : 0

  365.         scaled : 0 . 00

  366.     min . sel . est . : 0 . 01000000

  367. * * Dynamic sampling col . stats . :

  368.   Column ( # 5 ) : HIREDATE ( Part# : 0

  369.     AvgLen : 7 NDV : 13 Nulls : 0 Density : 0 . 076923

  370. * * Using dynamic sampling NULLs estimates .

  371. * * Using dynamic sampling NDV estimates .

  372.    Scaled NDVs using cardinality = 14 .

  373. * * Using dynamic sampling card . : 14

  374. * * Dynamic sampling updated table card .

  375. * * Using single table dynamic sel . est . : 0 . 35714286

  376.   Table : EMP1  Alias : EMP1

  377.     Card : Original : 14 . 000000  Rounded : 5  Computed : 5 . 00  Non Adjusted : 5 . 00

  378.   Access Path : TableScan

  379.     Cost : 3 . 00  Resp : 3 . 00  Degree : 0

  380.       Cost_io : 3 . 00  Cost_cpu : 33246

  381.       Resp_io : 3 . 00  Resp_cpu : 33246

  382.   Best : : AccessPath : TableScan

  383.          Cost : 3 . 00  Degree : 1  Resp : 3 . 00  Card : 5 . 00  Bytes : 0


  384. Access path analysis for EMP

  385. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  386. SINGLE TABLE ACCESS PATH

  387.   Single Table Cardinality Estimation for EMP [ EMP ]

  388.   Table : EMP  Alias : EMP

  389.     Card : Original : 14 . 000000  Rounded : 14  Computed : 14 . 00  Non Adjusted : 14 . 00

  390.   Access Path : TableScan

  391.     Cost : 3 . 00  Resp : 3 . 00  Degree : 0

  392.       Cost_io : 3 . 00  Cost_cpu : 39667

  393.       Resp_io : 3 . 00  Resp_cpu : 39667

  394.   Best : : AccessPath : TableScan

  395.          Cost : 3 . 00  Degree : 1  Resp : 3 . 00  Card : 14 . 00  Bytes : 0


  396. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *



  397. OPTIMIZER STATISTICS AND COMPUTATIONS

  398. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  399. GENERAL PLANS

  400. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  401. Considering cardinality - based initial join order .

  402. Permutations for Starting Table :

  403. Join order [ 1 ] : EMP [ EMP ] # 0  EMP1 [ EMP1 ] # 1


  404. * * * * * * * * * * * * * * *

  405. Now joining : EMP1 [ EMP1 ] # 1

  406. * * * * * * * * * * * * * * *

  407. NL Join

  408.   Outer table : Card : 14 . 00  Cost : 3 . 00  Resp : 3 . 00  Degree : 1  Bytes : 38

  409. Access path analysis for EMP1

  410.    Inner table : EMP1  Alias : EMP1

  411.   Access Path : TableScan

  412.     NL Join : Cost : 20 . 02  Resp : 20 . 02  Degree : 1

  413.       Cost_io : 20 . 00  Cost_cpu : 505108

  414.       Resp_io : 20 . 00  Resp_cpu : 505108


  415.   Best NL cost : 20 . 02

  416.           resc : 20 . 02  resc_io : 20 . 00 resc_cpu : 505108       resc_cpu指的是cpu cost  resc_io是IOcost,cost很好關心

  417.           resp : 20 . 02  resp_io : 20 . 00  resc_cpu : 505108

  418. Semi Join Card : 5 . 384615 = outer ( 14 . 000000 ) * sel ( . 384615 )

  419. Join Card - Rounded : 5 Computed : 5 . 38

  420.   Outer table : EMP  Alias : EMP

  421.     resc : 3 . 00  card 14 . 00  bytes : 38  deg : 1  resp : 3 . 00

  422.    Inner table : EMP1  Alias : EMP1

  423.     resc : 3 . 00  card : 5 . 00  bytes : 22  deg : 1  resp : 3 . 00

  424.     using dmeth : 2  #groups : 1

  425.     SORT ressource         Sort statistics

  426.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  427.       Degree : 1

  428.       Blocks to Sort : 1 Row size : 52 Total Rows : 14

  429.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  430.       Total IO sort cost : 0      Total CPU sort cost : 21023507

  431.       Total Temp space used : 0

  432.     SORT ressource         Sort statistics

  433.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  434.       Degree : 1

  435.       Blocks to Sort : 1 Row size : 35 Total Rows : 5

  436.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  437.       Total IO sort cost : 0      Total CPU sort cost : 21021629

  438.       Total Temp space used : 0

  439.   SM join : Resc : 8 . 00  Resp : 8 . 00 [ multiMatchCost = . 00 ]

  440. SM Join

  441.   SM cost : 8 . 00

  442.      resc : 8 . 00 resc_io : 6 . 00 resc_cpu : 42118049

  443.      resp : 8 . 00 resp_io : 6 . 00 resp_cpu : 42118049

  444.   Outer table : EMP  Alias : EMP

  445.     resc : 3 . 00  card 14 . 00  bytes : 38  deg : 1  resp : 3 . 00

  446.    Inner table : EMP1  Alias : EMP1

  447.     resc : 3 . 00  card : 5 . 00  bytes : 22  deg : 1  resp : 3 . 00

  448.     using dmeth : 2  #groups : 1

  449.     Cost per ptn : 0 . 50  #ptns : 1

  450.     hash_area : 124 ( max = 14336 ) buildfrag : 1  probefrag : 1  ppasses : 1

  451.   Hash join : Resc : 6 . 50  Resp : 6 . 50 [ multiMatchCost = . 00 ]

  452. HA Join

  453.   HA cost : 6 . 50

  454.      resc : 6 . 50 resc_io : 6 . 00 resc_cpu : 10586066

  455.      resp : 6 . 50 resp_io : 6 . 00 resp_cpu : 10586066

  456. Best : : JoinMethod : HashSemi                                                                       best

  457.         Cost : 6 . 50  Degree : 1  Resp : 6 . 50  Card : 5 . 38 Bytes : 60

  458. * * * * * * * * * * * * * * * * * * * * * * *

  459. Best so far : Table# : 0  cost : 3 . 0019  card : 14 . 0000  bytes : 532

  460.               Table# : 1  cost : 6 . 5036  card : 5 . 3846  bytes : 300

  461. * * * * * * * * * * * * * * * * * * * * * * *

  462. Join order [ 2 ] : EMP1 [ EMP1 ] # 1  EMP [ EMP ] #

  463.     SORT ressource         Sort statistics

  464.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  465.       Degree : 1

  466.       Blocks to Sort : 1 Row size : 35 Total Rows : 5

  467.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  468.       Total IO sort cost : 0      Total CPU sort cost : 21021629

  469.       Total Temp space used : 0


  470. * * * * * * * * * * * * * * *

  471. Now joining : EMP [ EMP ] #

  472. * * * * * * * * * * * * * * *

  473. NL Join

  474.   Outer table : Card : 5 . 00  Cost : 4 . 00  Resp : 4 . 00  Degree : 1  Bytes : 22

  475. Access path analysis for EMP

  476.   Inner table : EMP  Alias : EMP

  477.   Access Path : TableScan

  478.     NL Join : Cost : 10 . 01  Resp : 10 . 01  Degree : 1

  479.       Cost_io : 9 . 00  Cost_cpu : 21173876

  480.       Resp_io : 9 . 00  Resp_cpu : 21173876


  481.   Best NL cost : 10 . 01

  482.           resc : 10 . 01  resc_io : 9 . 00  resc_cpu : 21173876

  483.           resp : 10 . 01  resp_io : 9 . 00  resc_cpu : 21173876

  484. Join Card : 5 . 384615 = outer ( 5 . 000000 ) * inner ( 14 . 000000 ) * sel ( . 076923 )

  485. Join Card - Rounded : 5 Computed : 5 . 38

  486.   Outer table : EMP1  Alias : EMP1

  487.     resc : 4 . 00  card 5 . 00  bytes : 22  deg : 1  resp : 4 . 00

  488.   Inner table : EMP  Alias : EMP

  489.     resc : 3 . 00  card : 14 . 00  bytes : 38  deg : 1  resp : 3 . 00

  490.     using dmeth : 2  #groups : 1

  491.     SORT ressource         Sort statistics

  492.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  493.       Degree : 1

  494.       Blocks to Sort : 1 Row size : 35 Total Rows : 3

  495.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  496.       Total IO sort cost : 0      Total CPU sort cost : 21021320

  497.       Total Temp space used : 0

  498.     SORT ressource         Sort statistics

  499.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  500.       Degree : 1

  501.       Blocks to Sort : 1 Row size : 52 Total Rows : 14

  502.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  503.       Total IO sort cost : 0      Total CPU sort cost : 21023507

  504.       Total Temp space used : 0

  505.   SM join : Resc : 9 . 00  Resp : 9 . 00 [ multiMatchCost = . 00 ]

  506. SM Join

  507.   SM cost : 9 . 00

  508.      resc : 9 . 00 resc_io : 6 . 00 resc_cpu : 63139368

  509.      resp : 9 . 00 resp_io : 6 . 00 resp_cpu : 63139368

  510.   Outer table : EMP1  Alias : EMP1

  511.     resc : 4 . 00  card 5 . 00  bytes : 22  deg : 1  resp : 4 . 00

  512.   Inner table : EMP  Alias : EMP

  513.     resc : 3 . 00  card : 14 . 00  bytes : 38  deg : 1  resp : 3 . 00

  514.     using dmeth : 2  #groups : 1

  515.     Cost per ptn : 0 . 50  #ptns : 1

  516.     hash_area : 124 ( max = 14336 ) buildfrag : 1  probefrag : 1  ppasses : 1

  517.   Hash join : Resc : 7 . 50  Resp : 7 . 50 [ multiMatchCost = . 00 ]

  518. HA Join

  519.   HA cost : 7 . 50

  520.      resc : 7 . 50 resc_io : 6 . 00 resc_cpu : 31606944

  521.      resp : 7 . 50 resp_io : 6 . 00 resp_cpu : 31606944

  522. Join order aborted : cost > best plan cost

  523. * * * * * * * * * * * * * * * * * * * * * * *

  524. ( newjo - stop - 1 ) k : , spcnt : , perm : 2 , maxperm : 2000


  525. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  526. Number of join permutations tried : 2

  527. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  528. Consider using bloom filter between EMP [ EMP ] and EMP1 [ EMP1 ] with ? ?

  529. kkoBloomFilter : join ( lcdn : 14 rcdn : 5 jcdn : 5 limit : 35 )

  530. Computing bloom ndv for creator : EMP [ EMP ] ccdn : 14 . 0 and user : EMP1 [ EMP1 ] ucdn : 5 .

  531. kkopqComputeBloomNdv : predicate ( bndv : 13 ndv : 13 ) and ( bndv : 13 ndv : 5 )

  532. kkopqComputeBloomNdv : pred cnt : 2 ndv : 14 reduction : 3

  533. kkoBloomFilter : join ndv : 0 reduction : 2 . 800000 ( limit : . 500000 ) rejected because distinct value ratio

  534. Enumerating distribution method ( advanced )

  535. - - - Distribution method for

  536. join between EMP [ EMP ] ( serial ) and EMP1 [ EMP1 ] ( serial ) ; jm = 2 ; right side access path = TableScan

  537. - - - - serial Hash - Join - > NONE


  538. ( newjo - save ) [ 0 1 ]

  539. Trying or - Expansion on query block SEL$5DA710D3 ( # 1 )

  540. Transfer Optimizer annotations for query block SEL$5DA710D3 ( # 1 )

  541. id = 0 frofkksm [ i ] ( sort - merge/hash ) predicate = EMP . HIREDATE = EMP1 . HIREDATE

  542. id = 0 frosand ( sort - merge/hash ) predicate = EMP . HIREDATE = EMP1 . HIREDATE

  543. id = 0 frofand predicate = EMP1 . DEPTNO = 20

  544. Final cost for query block SEL$5DA710D3 ( # 1 ) - All Rows Plan :

  545.   Best join order : 1

  546.   Cost : 6 . 5036  Degree : 1  Card : 5 . 0000  Bytes : 300

  547.   Resc : 6 . 5036  Resc_io : 6 . 0000  Resc_cpu : 10586066

  548.   Resp : 6 . 5036  Resp_io : 6 . 0000  Resc_cpu : 10586066

  549. kkoqbc - subheap ( delete addr = 0x2b02873bfaa0 , in - use = 26480 , alloc = 32840 )

  550. kkoqbc - end :

  551.          :

  552.      call ( in - use = 27832 , alloc = 82024 ) , compile ( in - use = 130344 , alloc = 135984 ) , execution ( in - use = 4384 , alloc = 8088 )


  553. kkoqbc : finish optimizing query block SEL$5DA710D3 ( # 1 )

  554. apadrv - end

  555.            :

  556.      call ( in - use = 27832 , alloc = 82024 ) , compile ( in - use = 131424 , alloc = 135984 ) , execution ( in - use = 4384 , alloc = 8088 )



  557. Starting SQL statement dump


  558. user_id = 83 user_name = SCOTT module = SQL * Plus action =

  559. sql_id = 0rbab21pk95av plan_hash_value = 1992738195 problem_type = 3

  560. - - - - - Current SQL Statement for this session ( sql_id = 0rbab21pk95av ) - - - - -

  561. select / * + ^ ^ ^ ^ * / * from emp where hiredate = any ( select hiredate from emp1 where deptno = 20 )

  562. sql_text_length = 94

  563. sql = select / * + ^ ^ ^ ^ * / * from emp where hiredate = any ( select hiredate from emp1 where deptno = 20 )

  564. - - - - - Explain Plan Dump - - - - -

  565. - - - - - Plan Table - - - - -

  566.  

  567. = = = = = = = = = = = =

  568. Plan Table

  569. = = = = = = = = = = = =

  570. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

  571. | Id | Operation            |   Name | Rows | Bytes | Cost |      Time |

  572. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

  573. |   0 | SELECT STATEMENT     |          |        |         |     7 |            |

  574. |   1 |    HASH JOIN SEMI      |          |     5 |    300 |     7 | 00 : 00 : 01 |

  575. |   2 |    TABLE ACCESS FULL |     EMP |    14 |    532 |     3 | 00 : 00 : 01 |

  576. |   3 |    TABLE ACCESS FULL |    EMP1 |     5 |    110 |     3 | 00 : 00 : 01 |

  577. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

  578. Predicate Information :

  579. - - - - - - - - - - - - - - - - - - - - - -

  580. 1 - access ( "HIREDATE" = "HIREDATE" )

  581. 3 - filter ( "DEPTNO\" = 20 )

  582.  

  583. Content of other_xml column

  584. = = = = = = = = = = = = = = = = = = = = = = = = = = =

  585.   db_version : 11 . 2 . . 3

  586.   parse_schema : SCOTT

  587.   dynamic_sampling : 2

  588.   plan_hash : 1992738195

  589.   plan_hash_2 : 2144276133

  590.   Outline Data :

  591.   / * +

  592.     BEGIN_OUTLINE_DATA

  593.       IGNORE_OPTIM_EMBEDDED_HINTS

  594.       OPTIMIZER_FEATURES_ENABLE ( '11.2.0.3' )

  595.       DB_VERSION ( '11.2.0.3' )

  596.       ALL_ROWS

  597.       OUTLINE_LEAF ( @ "SEL$5DA710D3" )

  598.       UNNEST ( @ "SEL$2" )

  599.       OUTLINE ( @ "SEL$1" )

  600.       OUTLINE ( @ "SEL$2" )

  601.       FULL ( @ "SEL$5DA710D3" \ "EMP\" @ \ "SEL$1" )

  602.       FULL ( @ "SEL$5DA710D3" "EMP1" @ "SEL$2" )

  603.       LEADING ( @ "SEL$5DA710D3" "EMP" @ "SEL$1" "EMP1" @ "SEL$2" )

  604.       USE_HASH ( @ "SEL$5DA710D3" "EMP1" @ "SEL$2" )

  605.     END_OUTLINE_DATA

  606.    * /



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-1442948/,如需轉載,請註明出處,否則將追究法律責任。

相關文章