mysql - 请教下前辈们关于For循环和IN查询哪种效率高一些?
阿神
阿神 2017-04-17 13:15:40
[MySQL讨论组]

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

阿神
阿神

闭关修行中......

全部回复(2)
大家讲道理

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

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

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

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

ringa_lee

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号