比如在package中,有a,b表
a--数据量小,只有10条记录
b--数据量大,有一万条记录
写法1
for re_a in(select * from a) loop
for re_b in(select * from b) loop
..........
end loop;
写法2
for re_a in(select * from b) loop
for re_b in(select * from a) loop
..........
end loop;
end loop;看过资料,好象说多层循环是先读外层数据的,
那么写法1应该比2快了,是这样吗,没经过验证
比如在package中,有a,b表
a--数据量小,只有10条记录
b--数据量大,有一万条记录
写法1
for re_a in(select * from a) loop
for re_b in(select * from b) loop
..........
end loop;
写法2
for re_a in(select * from b) loop
for re_b in(select * from a) loop
..........
end loop;
end loop;看过资料,好象说多层循环是先读外层数据的,
那么写法1应该比2快了,是这样吗,没经过验证
你可以试试
这个感觉里层小表在里层的话可能快一点
小表的数据能全部读取到缓冲区,大表数据量大只能读取到缓冲区一部分
小表在里面,重复查询,都是从缓冲区读取,IO速度应该会快一点
DML中查询语句中外层内层应该是小表放外层,因为select是先查外层,再查内层的,是吧
早期的oracle可以肯定应该小表放外层,最新版本没做过测试,不确定oracle会不会自己做优化