如何更有效???

黄海之滨渔夫 2004-10-15 08:03:26
sql_cmd:='insert into '||billmonthname||' select * from '||day_tablename;

EXECUTE IMMEDIATE sql_cmd;
COMMIT;

把每天的数据导入到月份表中,每天数据量挺大。300万条,如何提高效率?这是过程的一部分
...全文
113 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluelamb 2004-10-22
  • 打赏
  • 举报
回复
对于你的300万条记录没有什么明显效果,同意使用sqlloader
bluelamb 2004-10-22
  • 打赏
  • 举报
回复
可以用数据绑定
zhihaitao 2004-10-22
  • 打赏
  • 举报
回复
不要用insert,太慢了,用sqlloader吧,要快好多。
方法:先吧表中的数据导到一个文本文件,再用sqlldr命令导入
newsjb 2004-10-22
  • 打赏
  • 举报
回复
我觉的如果用sql语句来做 事务处理需要太多资源 可不可以改个思路来解决呢?
如:做个job 先把数据用导出命令导出来 再导入呢? 因为导入导出可以一段段数据提交
黄海之滨渔夫 2004-10-21
  • 打赏
  • 举报
回复
现在就是每天晚上12点干活,但是老在这地方当掉
lialin 2004-10-21
  • 打赏
  • 举报
回复
在哪里出毛病?
zwj0712 2004-10-18
  • 打赏
  • 举报
回复
写个job。
lialin 2004-10-18
  • 打赏
  • 举报
回复
导入时把索引触 发器去掉是比较好的,速度也比较快,做一个job每天在业务量少的时候做,在做之前删除索引,禁用触发器,然后导入后再建立!
wuzd 2004-10-18
  • 打赏
  • 举报
回复
不影响的话, 写个任务,每天凌晨处理数据,
changlin365 2004-10-16
  • 打赏
  • 举报
回复
ding
liubiqu 2004-10-16
  • 打赏
  • 举报
回复
同意楼上的,如果数据大的时候最好把一些触发器和约束等去掉,是最明智的做法
zmgowin 2004-10-15
  • 打赏
  • 举报
回复
将sql_cmd:='insert into '||billmonthname||' select * from '||day_tablename;
改成sql_cmd:='insert /*+APPEND*/ into '||billmonthname||' select * from '||day_tablename;
可以提高一些速度

另外可能的话可以在insert操作前将目标表的约束和索引去掉,等insert完数据在重建
相关推荐
发帖
Oracle 高级技术

3472

社区成员

Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
帖子事件
创建了帖子
2004-10-15 08:03
社区公告
暂无公告