关于插入大量数据的执行效率问题,解决后马上给分!!

summer724 2003-01-13 04:45:33
需要连续向数据库中插入大概3万条数据,偶是用的一个循环

数据并不纯粹是从某个表中取的,新表中的某些字段,比如说日期就的另外加上
我的主要语句大体是这样:
fetch cursor into :...
do while sqlca.sqlcode = 0

do while ls_startdate<=ls_enddate
insert ...
loop
fetch cursor into :.......;
loop
//对新插入记录的某些字段进行更新

commit;
对用游标取到的一条记录,生成其一个月的相关记录放在另外一个表中
数据库用的是oracle ,但是速度很慢 大概需要20多分钟,偶觉得原因应该出在两重循环上,请高手指点有没有什么更好的解决办法
拜托!!
...全文
36 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovezpl 2003-01-15
  • 打赏
  • 举报
回复
使用存储过程 临时表方式 效率会高好多
如果可以使用一句sql得到要插入的数据 可以考虑如下的方法
insert into table select_sql
alwaystar 2003-01-14
  • 打赏
  • 举报
回复
同意liaolwj(风儿) 的观点
使用INSERT.. FROM的方法比较好,最好是让它在后台执行

同时:ORACLE和DB2不支持UPDATE FROM 语法,真是气人
AesopTong 2003-01-13
  • 打赏
  • 举报
回复
bulk into
edely 2003-01-13
  • 打赏
  • 举报
回复
做一DataStore,然后再循环插入数据。如果可能的话,你可以用存储过程一试。总之,游标是不要用的,缺点太多了。
ropriest 2003-01-13
  • 打赏
  • 举报
回复
用临时表或者用Datastore比较而言,可能要快些!
bomber2001 2003-01-13
  • 打赏
  • 举报
回复
游标太慢了,考虑用其他的,至少DATASTORE比它好点...
heijj 2003-01-13
  • 打赏
  • 举报
回复
同意,不要用游标,太消耗资源了!
leepoy 2003-01-13
  • 打赏
  • 举报
回复
楼上说得对,游标很影响执行速度的
liaolwj 2003-01-13
  • 打赏
  • 举报
回复
使用游标是比较慢的,你可以用sql中的insert into table select ... from table t1,table t2 where t1.ls_startdate<=t2.ls_enddate 然后commit就比较快了。
ice2water 2003-01-13
  • 打赏
  • 举报
回复
先插入一临时表,再插入正式表,使用sql语句要好些

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧