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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle执行计划顺序

發(fā)布時(shí)間:2025/3/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle执行计划顺序 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

先從最開頭一直往右看,直到看到最右邊的并列的地方,對(duì)于不并列的,靠右的先執(zhí)行:對(duì)于并列的,靠上的先執(zhí)行。
????? 即并列的縮進(jìn)塊,從上往下執(zhí)行,非并列的縮進(jìn)塊,從下往上執(zhí)行。

如下示例:

Execution Plan
----------------------------------------------------------
?? 0????? SELECT STATEMENT Optimizer=CHOOSE
?? 1??? 0?? NESTED LOOPS
?? 2??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_HOST_BATCH_DTL'
?? 3??? 2?????? INDEX (RANGE SCAN) OF 'XIE2TB_HOST_BATCH_DTL' (NON-UNIQUE)
?? 4??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_BATCH_TRAN_CTRL'
?? 5??? 4?????? INDEX (UNIQUE SCAN) OF 'SYS_C0034652' (UNIQUE)

不妨假設(shè)最右邊的數(shù)據(jù)為行號(hào),語句執(zhí)行是按塊進(jìn)行的。
從上述執(zhí)行計(jì)劃的開頭一直往右看,直到找到最右邊并列的。也就是從SELECT STATEMENT開始往右找。
找到一級(jí)縮進(jìn)塊,只有一個(gè),沒有優(yōu)先級(jí)可言,如下:
?? 1??? 0?? NESTED LOOPS
?? 2??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_HOST_BATCH_DTL'
?? 3??? 2?????? INDEX (RANGE SCAN) OF 'XIE2TB_HOST_BATCH_DTL' (NON-UNIQUE)
?? 4??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_BATCH_TRAN_CTRL'
?? 5??? 4?????? INDEX (UNIQUE SCAN) OF 'SYS_C0034652' (UNIQUE)

再在一級(jí)縮進(jìn)塊中找二級(jí)縮進(jìn)塊,找到兩個(gè),如下:
?? 第一個(gè)二級(jí)縮進(jìn)塊:
?? 2??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_HOST_BATCH_DTL'
?? 3??? 2?????? INDEX (RANGE SCAN) OF 'XIE2TB_HOST_BATCH_DTL' (NON-UNIQUE)
?? 第二個(gè)二級(jí)縮進(jìn)塊:
?? 4??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_BATCH_TRAN_CTRL'
?? 5??? 4?????? INDEX (UNIQUE SCAN) OF 'SYS_C0034652' (UNIQUE)

按照并列塊從上往下執(zhí)行的原則,第一個(gè)二級(jí)縮進(jìn)塊的所有語句將優(yōu)先于第二個(gè)二級(jí)縮進(jìn)塊的語句執(zhí)行。
而兩個(gè)二級(jí)縮進(jìn)塊執(zhí)行完,才能執(zhí)行一級(jí)縮進(jìn)塊,這是因?yàn)榉遣⒘械目s進(jìn)塊,從下往上執(zhí)行。


再在二級(jí)縮進(jìn)塊中找三級(jí)縮進(jìn)塊。
第一個(gè)二級(jí)縮進(jìn)塊中只有一個(gè)三級(jí)縮進(jìn)塊,如下:
?? 3??? 2?????? INDEX (RANGE SCAN) OF 'XIE2TB_HOST_BATCH_DTL' (NON-UNIQUE)
由于沒有更低層級(jí)的縮進(jìn)塊,因此,該塊最先執(zhí)行。然后執(zhí)行二級(jí)縮進(jìn)塊。


第二個(gè)二級(jí)縮進(jìn)塊中也只有一個(gè)三級(jí)縮進(jìn)塊,如下:
?? 5??? 4?????? INDEX (UNIQUE SCAN) OF 'SYS_C0034652' (UNIQUE)
二級(jí)縮進(jìn)塊中沒有更低層次的縮進(jìn)塊了,因此,執(zhí)行完第一個(gè)二級(jí)縮進(jìn)塊的所有語句后,便執(zhí)行此三級(jí)縮進(jìn)塊,再執(zhí)行對(duì)應(yīng)的二級(jí)縮進(jìn)塊。

兩個(gè)二級(jí)縮進(jìn)塊均執(zhí)行完成后,再執(zhí)行整個(gè)一級(jí)縮進(jìn)塊。

因此,若按行排序,語句的執(zhí)行順序便是: 3 -> 2 -> 5 -> 4 -> 1, 即:

?? 3??? 2?????? INDEX (RANGE SCAN) OF 'XIE2TB_HOST_BATCH_DTL' (NON-UNIQUE)?? ->
?? 2??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_HOST_BATCH_DTL'?????????? ->
?? 5??? 4?????? INDEX (UNIQUE SCAN) OF 'SYS_C0034652' (UNIQUE)?????????????? ->
?? 4??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_BATCH_TRAN_CTRL'????????? ->
?? 1??? 0?? NESTED LOOPS

執(zhí)行計(jì)劃順序的理論解釋:
執(zhí)行計(jì)劃是按一定規(guī)則顯示的,如下:
Execution Plan
----------------------------------------------------------
?? 0????? SELECT STATEMENT Optimizer=CHOOSE
?? 1??? 0?? NESTED LOOPS
?? 2??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_HOST_BATCH_DTL'
?? 3??? 2?????? INDEX (RANGE SCAN) OF 'XIE2TB_HOST_BATCH_DTL' (NON-UNIQUE)
?? 4??? 1???? TABLE ACCESS (BY INDEX ROWID) OF 'TB_BATCH_TRAN_CTRL'
?? 5??? 4?????? INDEX (UNIQUE SCAN) OF 'SYS_C0034652' (UNIQUE)
第一個(gè)列是步驟的ID (相當(dāng)于我們說的行號(hào))
第二個(gè)列是父步驟的ID?
第三個(gè)列是該步驟要進(jìn)行的操作。
在執(zhí)行過程中,父步驟依賴于子步驟。只有對(duì)應(yīng)的所有子步驟執(zhí)行完,才能執(zhí)行父步驟。

因此,步驟0的子步驟為1, 步驟1的子步驟為2,4, 步驟2子步驟為3,步驟4的子步驟為5, 步驟3,5沒有子步驟了。
故步驟3所在的模塊,或步驟5所在的模塊先執(zhí)行。但步驟3排在步驟5的前面,故步驟3所在的模塊先執(zhí)行。因此,順序仍是:
3 -> 2 -> 5 -> 4 -> 1

轉(zhuǎn)載于:https://www.cnblogs.com/caroline4lc/p/5080325.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。