比如一个场景,我现在在页面上选择了上千条记录,根据ID进行删除.   
    当然1.首先想到的是根据这些ID,循环生成Sql语句,一条一条删,但这样效率太差.   
        2.我想把这些ID用逗号串起来,还后使用IN(Id1,id2),这样虽然好一点,但是呢,好像oracle中IN不能超过1000个,而且IN的性能在oracle中本来就低.   
    不知各位朋友有什么好的办法,在数据库和java中实现都可.   

解决方案 »

  1.   

    用批量更新。不要一句一句提交   
        
      conn.setAutoCommit(false);   
        
      PreparedStatement pst = con.prepareStatement("delete from   xxtable where id=?");   
        
      for(int i = 0; i < 行数; i++){   
              pst.setString(1, 值[i]);
       
              //把一个SQL命令加入命令列表   
                pst.addBatch();   
      }   
      //执行批量更新   
      pst.executeBatch();   
        
      conn.commit();