日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

执行计划和执行顺序

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 执行计划和执行顺序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天從http://www.oraclefans.cn/forum/showtopic.jsp?rootid=181&CPages=1看到一個關于執行計劃的東東,做個筆記,記錄下來,我也是從上面載來的。

如果要了解執行計劃和執行順序,必須理解執行計劃的父子關系。執行計劃是一個樹狀結構,頂層的STATEMENT是這棵樹的根。父子關系按照如下的樹狀結構組織:

PARENT FIRST?CHILD SECOND CHILD 在這個例子里,FIRST CHILD最先執行,然后是SECOND CHILD,這兩個步驟執行完畢后,執行PARENT。下面是一個更多層次的結構: PARENT1 FIRST?CHILD FIRST?GRANDCHILD SECOND CHILD FIRST?GRANDCHILD是第一個執行的步驟,然后是FIRST CHILD。下面通過一個真實的執行計劃來驗證這個原則: set autotrace traceonly explain select ename,dname?from emp, dept? where emp.deptno=dept.deptno? and dept.dname in (‘ACCOUNTING’,’RESEARCH’,’SALES’,’OPERATIONS’); 15 rows selected. 這個語句的執行計劃如下: Execution Plan ---------------------------------------------------------- ?? 0????? SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=8 Bytes=248) ?? 1??? 0?? HASH JOIN (Cost=3 Card=8 Bytes=248) ?? 2??? 1???? TABLE ACCESS (FULL) OF DEPT (Cost=1 Card=3 Bytes=36) ?? 3??? 1???? TABLE ACCESS (FULL) OF EMP (Cost=1 Card=16 Bytes=304) ? 注意這個執行計劃的最左邊的兩個列,第一個列是步驟的ID,第二個列是父步驟的ID。執行從ID=0的行開始: 0????? SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=8 Bytes=248) 這個步驟沒有父步驟,有一個子步驟(ID=1),所以這個ID=1的步驟必須在執行步驟0之前執行。繼續觀察ID=1的步驟: 1??? 0?? HASH JOIN (Cost=3 Card=8 Bytes=248) 這個步驟是ID=0的步驟的子步驟,該步驟有2個子步驟:ID=2和ID=3,因此ID=2和ID=3的步驟必須在ID=1的步驟之前執行。再來檢查ID=2的步驟: 2??? 1???? TABLE ACCESS (FULL) OF ‘DEPT’ (Cost=1 Card=3 Bytes=36) 這個步驟是ID=1的步驟的子步驟,并且該步驟沒有任何子步驟。因此該步驟是這個SQL語句第一個執行的步驟,這個步驟產生的結果集會提供給ID=1的步驟。這個步驟是對表DEPT進行全表掃描,這個步驟的COST=1。 ID=1的步驟也依賴ID=3的步驟: 3??? 1???? TABLE ACCESS (FULL) OF ‘EMP’ (Cost=1 Card=16 Bytes=304) 這個步驟是ID=1的步驟的第二個子步驟,沒有任何子步驟,在這個語句中,是第二個被執行的步驟。 ID=1的步驟將ID=3和ID=3的步驟的結果集進行HASH 連接,然后把結果交給ID=0的步驟,就完成了本語句的執行。

轉載于:https://blog.51cto.com/qhd2004/285006

總結

以上是生活随笔為你收集整理的执行计划和执行顺序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。