有两张表分别为: problem, answer
problem 表中的字段:problem 表中含有ANSWERNUMBER字段answer表中含有PROBLEM 和 ASKSTATE两个字段,其中PROBLEM 就是problem 表中的idproblem 表中ANSWERNUMBER字段是根据answer表中country(PROBLEM )and ASKSTATE != -1得出的
我用的是Oracle数据库,在数据量小的情况下,更新表problem是没问题的,但是大数据量的话,就会锁住数据苦衷的表,请各位高手指点怎么写SQL文,才能大批量的修改problem 表中ANSWERNUMBER字段?

解决方案 »

  1.   

    你表述有点不清楚。
    可以考虑:
    update problem 表之前,先锁定要修改的范围
    declare
     rec_problem problem%row_type;
    begin
    ...
    update problem into rec_problem where .... for update;
    --执行更新
    ...
      

  2.   

    设置每次删除的条数,比如一次只删除500条,commit,再删除..
      

  3.   

    我建议把update 拆分为delete 和insert 同时500条一commit