+ -
当前位置:首页 → 问答吧 → hookee进来帮忙下!

hookee进来帮忙下!

时间:2011-10-12

来源:互联网

我发过2个帖子了,你都有简单回答。非常感谢。不过我还是不太明白。

就是关于 循环 读取数据库中的部分记录,然后更新。什么时候调用update的问题。

do while...

  ......
loop


我数据库中上万条记录,我只需要对其中几千条记录更改。

如果在loop结束后 调用rs.updatebatch ,那是不是意味着:
程序执行创建的记录集都保存在内容中,我循环时 读取的记录假设8000条,那8000条都在内存中,当我调用rs.updatebatch 的时候,才会 把所有记录送回数据库。

而如果在每次循环的时候 执行rs.update 那是不是 每次循环都往数据库送内容。

如果rs.updatebatch , 如果记录很多的时候, 还能保证数据正常吗? 万一电脑内存不够了怎么办? 2g的内存 执行1万条 简单的记录 会怎么样?

作者: fisherboy   发布时间: 2011-10-12

sf。

作者: mkkistudy   发布时间: 2011-10-12

批处理不好,不仅内存不够了不好办,如果断电呢,事务用起来也不方便,还是写进去一个更新一个如下:
rs.open sql,conn,1,4 
do while not rs.eof
 rs("xx") = xx
 rs.update
 rs.moveNext
loop
rs.close
set rs=nothing

作者: engzlb   发布时间: 2011-10-12

过程的确是这样的。updatebatch 是一次递交, 循环内的Updade是n次递交。
内存管理是操作系统的事情,不是占据所有的物理内存,系统会自动切换虚拟内存.
--------
万条数据,尚可接受,不过,如果是更多数据不应该是全部取出来再循环,不能用其他方式?
大量数据尽可能用SQL本身的优化.
sql = "Update xxx;Update xxx;Update xxx;"
然后conn.execute sql 试试看

作者: hookee   发布时间: 2011-10-12