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

解决方案 »

  1.   

    answernumber字段感觉比较冗余,为啥要更新呢?必要的时候查询出来就可以
      

  2.   

    因为现在的数据库中有大量的数据,塞得数据有错误的,现在要修改过来
    update problem set answerNumber = (select count(id) from answer where  problem.id =answer.problem and  answer.askstate != -1)这是我写的语句,但是里面有3w多条数据,这样数据库就直接锁住了
      

  3.   

    answer.problem是否是外键,如果是的话,建立索引看看,外键没索引很容易锁表