以下两个SQL语句:
一:
for(Order order : OrderList){
orderService.delete(order.getId());
}
二:
orderService.delete(orderIds);
delete from Order where order_id in
<foreach collection="orderIds" item="id" open="(" close=")" separator=",">
{idr}
</foreach>
一般来说是后者效率高一些。原因是这样:
多次执行语句,与数据库进行了多次交互,网络传输以及mysql解析和执行sql语句都需要处理多次;
for循环内执行sql语句会占用连接池连接,数据库连接池可能被耗尽。
ps:mybatis解析语句时间和数据库处理更为复杂语句的时间在这里几乎可以忽略不计。