在MySQL中小批量的删除一些数据,用什么方法最好?
delete from table where ID in (1,2,3,4,5,6,7,8,9) 这样是否可行?
要考虑安全性,效率等等方面因素
用到的技术有jdbc,hibernate,struts等
delete from table where ID in (1,2,3,4,5,6,7,8,9) 这样是否可行?
要考虑安全性,效率等等方面因素
用到的技术有jdbc,hibernate,struts等
安全性: 没什么差别。当然一步操作完成比分步完成相对安全一些。
效率: 如果IN()中的项数不多,且在SQL中都是常数的话,则效率应该可以。MySQL会自行优化。
不能以这个“小”来衡量,还要考虑到源表的数据量问题,因为你用in时是用不上索引的,会进行源表扫描
还要考虑删除过程中事务失败的回滚问题
这个方面要看应用的特点及实际的情况来选择合理的处理技巧吧
如:分批删除、利用临时表、将过滤剩余的数据用insert代替删除操作(主要考虑写日志的效率问题)等等。