oracle hint 強制索引 如何確定oracle驅(qū)動表?
如何確定oracle驅(qū)動表?為了選擇一個驅(qū)動器表,Oracle需要明確表的連接模式。對于不同的連接模式,驅(qū)動表的選擇邏輯是不同的:1:嵌套循環(huán)]NL的驅(qū)動表是執(zhí)行計劃中最接近嵌套循環(huán)的表,即驅(qū)動表。如
如何確定oracle驅(qū)動表?
為了選擇一個驅(qū)動器表,Oracle需要明確表的連接模式。對于不同的連接模式,驅(qū)動表的選擇邏輯是不同的:
1:嵌套循環(huán)
]NL的驅(qū)動表是執(zhí)行計劃中最接近嵌套循環(huán)的表,即驅(qū)動表。如下圖所示,EMP是driver表。
在NL下,驅(qū)動程序表選擇兩個相關表中返回行數(shù)最少的一個。
2:哈希聯(lián)接
HJ的驅(qū)動程序表是執(zhí)行計劃中最接近哈希聯(lián)接的表,即驅(qū)動程序表。如上圖所示,Dept最接近hash join關鍵字,這意味著Dept是一個驅(qū)動程序表。
在HJ中,也選擇小表作為驅(qū)動表,但這里的小表與NL不同,行數(shù)較少,但它是指行數(shù)*列寬。
注意:如果您希望Oracle選擇正確的驅(qū)動程序表和正確的執(zhí)行計劃,則必須確保Oracle數(shù)據(jù)庫中表的統(tǒng)計信息是準確的。對于特定的SQL,如何判斷引用表的統(tǒng)計信息是否準確?可以通過以下腳本進行驗證。
選擇所有者,表名,對象類型,過時統(tǒng)計,最后分析
從dba選項卡統(tǒng)計
其中表名在(“表名”
和所有者=“表所有者”
希望對主題有所幫助。