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