oracle存儲(chǔ)過程嵌套循環(huán) Oracle的兩表連接怎么實(shí)現(xiàn)呢?
Oracle的兩表連接怎么實(shí)現(xiàn)呢?declare j number:=4 k number:=0 cursor curugetudata is select a1 from TableAbegin f
Oracle的兩表連接怎么實(shí)現(xiàn)呢?
declare j number:=4 k number:=0 cursor curugetudata is select a1 from TableAbegin for i in curugetudata loop update TableB set TableB.b2=i.a1 where TableB.b1<=j and TableB.b1>=k k:=j j:=j 5 end loopend
對(duì)于排序合并聯(lián)接,如果應(yīng)用了目標(biāo)SQL中指定的謂詞條件后,兩個(gè)表的結(jié)果集較大,需要排序,則排序合并聯(lián)接的執(zhí)行效率不高;對(duì)于嵌套循環(huán)聯(lián)接,如果驅(qū)動(dòng)表對(duì)應(yīng)的驅(qū)動(dòng)結(jié)果集的記錄數(shù)較大,即使驅(qū)動(dòng)表的連接列上有索引,那么使用嵌套循環(huán)連接的執(zhí)行效率也不高。為了解決這個(gè)問題,Oracle引入了hash連接。在oracle10g及更高版本中,優(yōu)化器(實(shí)際上是CBO,因?yàn)閔ash join只適用于CBO)在解析目標(biāo)SQLuhashujoinuuenabled時(shí)考慮hash join是否限于隱式參數(shù),默認(rèn)值為true