新聞中心
我們如果想要了解,Ocacle執(zhí)行計劃與執(zhí)行順序,就必須的理解Ocacle執(zhí)行計劃的關系。其實Ocacle執(zhí)行計劃的關系就好比父子關系,執(zhí)行計劃通俗的講,就是一個樹狀結構,頂層的STATEMENT是這棵樹的根。父子關系按照如下的樹狀結構組織:

專業(yè)成都網(wǎng)站建設公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!成都創(chuàng)新互聯(lián)公司為您提供成都網(wǎng)站建設,五站合一網(wǎng)站設計制作,服務好的網(wǎng)站設計公司,成都做網(wǎng)站、網(wǎng)站制作負責任的成都網(wǎng)站制作公司!
- PARENT
- FIRST CHILD
- SECOND CHILD
在這個例子里,F(xiàn)IRST CHILD最先執(zhí)行,然后是SECOND CHILD,這兩個步驟執(zhí)行完畢后,執(zhí)行PARENT。下面是一個更多層次的結構:
- PARENT1
- FIRST CHILD
- FIRST GRANDCHILD
- SECOND CHILD
FIRST GRANDCHILD是第一個執(zhí)行的步驟,然后是FIRST CHILD。下面通過一個真實的Ocacle執(zhí)行計劃來驗證這個原則:
- set autotrace traceonly explain
- select ename,dname from emp, dept
- where emp.deptno=dept.deptno
- and dept.dname in
- (‘ACCOUNTING’,’RESEARCH’,’SALES’,’OPERATIONS’);
- rows selected.
這個語句的執(zhí)行計劃如下:
- Execution Plan
- SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=8 Bytes=248)
- HASH JOIN (Cost=3 Card=8 Bytes=248)
- TABLE ACCESS (FULL) OF ‘DEPT’ (Cost=1 Card=3 Bytes=36)
- TABLE ACCESS (FULL) OF ‘EMP’ (Cost=1 Card=16 Bytes=304)
注意這個Ocacle執(zhí)行計劃的最左邊的兩個列,第一個列是步驟的ID,第二個列是父步驟的ID。執(zhí)行從ID=0的行開始:
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=8 Bytes=248)
這個步驟沒有父步驟,有一個子步驟(ID=1),所以這個ID=1的步驟必須在執(zhí)行步驟0之前執(zhí)行。繼續(xù)觀察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的步驟之前執(zhí)行。再來檢查ID=2的步驟:
2 1 TABLE ACCESS (FULL) OF ‘DEPT’ (Cost=1 Card=3 Bytes=36)
這個步驟是ID=1的步驟的子步驟,并且該步驟沒有任何子步驟。因此該步驟是這個SQL語句第一個執(zhí)行的步驟,這個步驟產(chǎn)生的結果集會提供給ID=1的步驟。這個步驟是對表DEPT進行全表掃描,這個步驟的COST=1。
ID=1的步驟也依賴ID=3的步驟:
3 1 TABLE ACCESS (FULL) OF ‘EMP’ (Cost=1 Card=16 Bytes=304)
這個步驟是ID=1的步驟的第二個子步驟,沒有任何子步驟,在這個語句中,是第二個被執(zhí)行的步驟。
ID=1的步驟將ID=3和ID=3的步驟的結果集進行HASH 連接,然后把結果交給ID=0的步驟,就完成了本語句的執(zhí)行。
以上的相關內容就是對Ocacle執(zhí)行計劃和執(zhí)行順序的內容介紹,望你能有所收獲。
當前文章:Ocacle執(zhí)行計劃與執(zhí)行順序的代碼示例
瀏覽地址:http://www.5511xx.com/article/cddoocg.html


咨詢
建站咨詢
