在MySQL中小批量的删除一些数据,用什么方法最好?
  delete   from   table where   ID   in (1,2,3,4,5,6,7,8,9) 这样是否可行?
   要考虑安全性,效率等等方面因素
   用到的技术有jdbc,hibernate,struts等  

解决方案 »

  1.   

    小批量的删除, 这样足以。 不建议使用临时表了。delete from table where ID in (1,2,3,4,5,6,7,8,9);
    安全性: 没什么差别。当然一步操作完成比分步完成相对安全一些。
    效率: 如果IN()中的项数不多,且在SQL中都是常数的话,则效率应该可以。MySQL会自行优化。
      

  2.   

    安全性: 可考虑在应用控制效率:对于大数据量来说,where中的条件,可考虑建索引
      

  3.   

    小批量删除?
    不能以这个“小”来衡量,还要考虑到源表的数据量问题,因为你用in时是用不上索引的,会进行源表扫描
    还要考虑删除过程中事务失败的回滚问题
    这个方面要看应用的特点及实际的情况来选择合理的处理技巧吧
    如:分批删除、利用临时表、将过滤剩余的数据用insert代替删除操作(主要考虑写日志的效率问题)等等。