【DB筆試面試601】在Oracle中,給出下面執行計劃的執行順序。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

♣          題目         部分



閱讀以下的執行計劃,給出SQL的執行順序。ide

 1-----------------------------------------
 2| Id  | Operation
 3-----------------------------------------
 4|   0 | SELECT STATEMENT
 5|   1 |  SORT AGGREGATE
 6|   2 |   VIEW
 7|   3 |    UNION-ALL
 8|*  4 |     FILTER
 9|*  5 |      HASH JOIN
10|   6 |       TABLE ACCESS FULL
11|*  7 |       TABLE ACCESS FULL
12|*  8 |      TABLE ACCESS BY INDEX ROWID
13|*  9 |       INDEX UNIQUE SCAN
14|  10 |     NESTED LOOPS
15|  11 |      INDEX FULL SCAN
16|  12 |      TABLE ACCESS CLUSTER
17|* 13 |       INDEX UNIQUE SCAN
18-------------------------------------------
   




     
♣          答案部分          



分析:採用最右最上最早執行的原則看層次關係,在同一級若是某個動做沒有子ID,那麼就最早執行,首先,六、七、九、13最右,因此,6,7最早執行作HASH JOIN,爲6,7,5。spa

第二,8有子節點,接下來是9,8。3d

第三,HASH的結果和8的結果作FILTER過濾。blog

第四,10這個節點根據原則是11,13,12,10。it

第五,剩下依次是3,2,1,0。io

因此,該圖的執行順序是6,7,5,9,8,4,11,13,12,10,3,2,1,0。class

相關文章
相關標籤/搜索