JFinal 批量删除哪种方式更高效?

三种方式哪种更高效?或者有更好的办法?

例如前台传过来的数据
ids = "1,2,23,43,1231,1239...."; 都是主键 若干多

方式1 使用in:
String ids = this.getPara("ids"); 
Db.delete("delete from table where id in(?)",ids);

方式2 使用循环:
String ids = this.getPara("ids"); 
String [] idArrs = ids.split(",");
for(String id:ids){
    Db.deleteById(tableName,id);
}

方式3  使用batch

String ids = this.getPara("ids");
String [] idArrs = ids.split(",");
 //转化为二维数组 
Object[][] idArrs2Degree= 变二维(idArrs); 
String sql = " delete from tableName id = ? ";
Db.batch(sql, idArrs2Degree,100);

-----------------------------------------
何种方式在数据量比较大的时候更加高效呢?


评论区

JFinal

2018-09-05 22:15

batch 最高,第一种次之,最差性能是循环删

roney

2018-11-18 18:20

@JFinal方式1有问题的,这种写法一个占位符 只delete掉了ids字符串中的第一个!!!

roney

2018-11-18 18:25

硬生生改成了 sql=delete from table where id in ("+ids+") 就可以

热门反馈

扫码入社