隐式游标使用一般是for rec in (select * from xxxx),这种方式广泛被认可。
而显示游标(open - close)的使用有些争议,效率不高,内存泄露等问题。
1.效率问题
a.如果数据量不大,并且一个sql能完成的功能,是没必要使用游标
b.数据量巨大,即使简单的update也会卡到死,我会考虑使用游标循环处理(包括隐式和显式游标);又引出一个话题,如果对巨量数据做更新做优化?使用批量更新,循环把数据放到数组里,然后每1万条update一次?循环update,每一万条commit一次?创建临时表,给每行编行号,然后 使用行号做限制条件一万条处理一次?如果有好的建议请不要吝啬
例如:如果表t1有5千万条数据,更新到表t2中,对t1来讲是每条数据都需要处理,怎么办?2.内存问题
a.open 的游标,使用之后close,这样还有内存泄露么?我不知道,坐等回复
b.有人说使用游标之后数据库变慢了,内存占用的多了,这个怎么解释
数据库游标优化大数据处理
而显示游标(open - close)的使用有些争议,效率不高,内存泄露等问题。
1.效率问题
a.如果数据量不大,并且一个sql能完成的功能,是没必要使用游标
b.数据量巨大,即使简单的update也会卡到死,我会考虑使用游标循环处理(包括隐式和显式游标);又引出一个话题,如果对巨量数据做更新做优化?使用批量更新,循环把数据放到数组里,然后每1万条update一次?循环update,每一万条commit一次?创建临时表,给每行编行号,然后 使用行号做限制条件一万条处理一次?如果有好的建议请不要吝啬
例如:如果表t1有5千万条数据,更新到表t2中,对t1来讲是每条数据都需要处理,怎么办?2.内存问题
a.open 的游标,使用之后close,这样还有内存泄露么?我不知道,坐等回复
b.有人说使用游标之后数据库变慢了,内存占用的多了,这个怎么解释
数据库游标优化大数据处理
解决方案 »
- 求oracle md5(16位)加解密的函数
- windowsXP oracle10G 非法关机造成,数据库打不开,求帮助!!
- dbms_random.value 好慢
- 怎样在程序中获得dbms_output.put_line('')的输出
- 大数据表备份方案求教
- 一个关于在pb9中调用oracle9存储过程的问题?
- 我建了一个视图,但现在查询起来速度特别慢,不知道是怎么回事,建立视图的代码如下,请大家帮忙看一下,多谢了!
- 如何批量修改一列的值?在原来的值前面都加上表名前缀?
- 急死我了!!!!!!!!!!!
- 求助,用sysdba登录提示连接到空闲例程原因
- 提交未提交的事务问题
- 求教大神,这种情况该怎么解决
恩...csdn Oracle坛子上面现在人气比较冷清,大牛都很少来了,看ITPUB的讨论吧.