请教下前辈们关于For循环和IN查询哪种效率高一些?

发布于 2022-09-01 18:00:36 字数 344 浏览 21 评论 0

以下两个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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狂之美人 2022-09-08 18:00:36

一般来说是后者效率高一些。原因是这样:

  1. 多次执行语句,与数据库进行了多次交互,网络传输以及mysql解析和执行sql语句都需要处理多次;

  2. for循环内执行sql语句会占用连接池连接,数据库连接池可能被耗尽。

ps:mybatis解析语句时间和数据库处理更为复杂语句的时间在这里几乎可以忽略不计。

无人接听 2022-09-08 18:00:36

如果in的字段建了索引in也是会用到的,所以结果就如楼上所说使用for循环会多很多次query的过程,很多时间消耗在网络请求上面。
一般做过代码分析的都知道,php其实并不会消耗太多时间,反而是网络请求消耗的时间较多。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文