oracle存储过程嵌套循环 Oracle的两表连接怎么实现呢?

Oracle的两表连接怎么实现呢?declare j number:=4 k number:=0 cursor curugetudata is select a1 from TableAbegin f

Oracle的两表连接怎么实现呢?

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

对于排序合并联接,如果应用了目标SQL中指定的谓词条件后,两个表的结果集较大,需要排序,则排序合并联接的执行效率不高;对于嵌套循环联接,如果驱动表对应的驱动结果集的记录数较大,即使驱动表的连接列上有索引,那么使用嵌套循环连接的执行效率也不高。为了解决这个问题,Oracle引入了hash连接。在oracle10g及更高版本中,优化器(实际上是CBO,因为hash join只适用于CBO)在解析目标SQLuhashujoinuuenabled时考虑hash join是否限于隐式参数,默认值为true