大家帮忙看一下,为什么效率变低了?
我的做法如下: 
 第一步:插入用户ID 
                insert   orders   (user_id)   ( 
                                     select 
                                                          user_id    
                                     from 
                                                 users 
                                     where 
                                                 sum_date=20070912 
                ); 
                commit;                
 操作结束后orders表将会有200万条记录 
 第二步:使用一个procedure更新orders表其他字段,基本内容如下 
                for   c_step2   in   ( 
                               select 
 	         user_id, 
 	         sum(product_fee)   fee_all, 
 	         sum(product_num)   product_all, 
 	         . 
 	         . 
 	         .							    
                               from 
                                              sell_his 
                               where 
                                                 sum_month   between   200706   and   200708 
                               group   by 
                                                 user_id 
                ) 
                loop 
                            update   orders   set							      fee_all=c_step2.fee_all,						      product_all=c_step2.product_all, 
 	      . 
 	      . 
 	      . 
                            where 
                                           user_id=c_step2.user_id; 
                end   loop; 
                commit; 
 当以上两个步骤单独执行时,速度还可以接受,基本上10分钟以内可以结束,但是当我把它们写入同一个procedure中时,第一步的执行时间大约为1分钟左右,但是第二步却需要超过40分钟,以上代码在写入同一个procedure没有任何改动,但是为什么效率差别这么大呢?我接触ORACLE的时间不长,希望大家指点一下,谢谢。
------解决方案--------------------把你二步放在一起的过程贴出来看看,怀疑有锁表。
------解决方案--------------------我觉得最大的分歧就在于第一次递交后  commit; 了。 
 第二种方法,200w条记录没有commit,占有了大量的内存。