关于sql语句中foreach循环次数过多,会不会影响MySQL数据库

weixin_42171083 2019-02-27 02:44:06
MySQL\Mybatis\JAVA

在SQL语句中使用foreach循环体包裹查询语句,如果不限制foreach循环的次数,假设进行了1000次循环会不会导致数据库异常?
...全文
1491 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这样要是真有成千上万条数据,没有索引查出来的东西也毫无意义
  • 打赏
  • 举报
回复
用个方法调用函数,for循环一个一个查就不会影响数据库,但是效率应该没这么快
stacksoverflow 2019-03-04
  • 打赏
  • 举报
回复
感觉业务有问题,这种查询为什么不想办法走主键?
weixin_42171083 2019-03-04
  • 打赏
  • 举报
回复
引用 2 楼 nayi_224 的回复:
代码发出来看看
select * from t_data_info where <foreach collection="infoDtos" index="index" item="info" separator="or"> 1=1 <if test="info.a!=null and info.a!=''"> and a like #{info.a} </if> <if test="info.b!=null and info.b!=''"> and b like #{info.b} </if> <if test="info.c!=null and info.c!=''"> and c like #{info.c} </if> </foreach> 类似这种形式的查询,JAVA后台传过来的infoDtos是几千个对象组成的list,会不会影响数据库本身性能?
weixin_42171083 2019-03-04
  • 打赏
  • 举报
回复
引用 1 楼 ar 的回复:
你想说的是动态SQL 中的foreach? 这个foreach只是拼装SQL,在拼装完成后才会提交执行
就是用Mybaits将成千上万的List<Object>,用property与column进行匹配,再到select语句中用foreach进行查询
weixin_42573932 2019-03-04
  • 打赏
  • 举报
回复
这种查询肯定是不走索引性能极低吧,可以把执行sql日志打出来分析一下
ZTzhubajie 2019-03-04
  • 打赏
  • 举报
回复
mysql数据包默认大小是1M,可以调大, 除了批量插入,查询要是单挑SQL能这么大也是蛮牛逼的
济南大飞哥 2019-03-04
  • 打赏
  • 举报
回复
循环体里如果有大量的回去释放链接操作,可能会导致数据库练级不够用而异常。
stacksoverflow 2019-03-04
  • 打赏
  • 举报
回复
引用 7 楼 weixin_42171083 的回复:
[quote=引用 6 楼 stacksoverflow 的回复:] 感觉业务有问题,这种查询为什么不想办法走主键?
业务上需求就是多个字段都可以用作查询,一般也不会有大量的对象传过来;就是担心万一有大量对象传过来,会不会导致数据库卡死,或者拒绝访问[/quote] 你可以自己测一下,最多能撑多少个条件。 每个数据库对接收的sql的长度都有限制的,自己查一下。 然后把程序能支撑的极限告诉业务,在业务上做一些限制。
weixin_42171083 2019-03-04
  • 打赏
  • 举报
回复
引用 6 楼 stacksoverflow 的回复:
感觉业务有问题,这种查询为什么不想办法走主键?
业务上需求就是多个字段都可以用作查询,一般也不会有大量的对象传过来;就是担心万一有大量对象传过来,会不会导致数据库卡死,或者拒绝访问
bcsflilong 2019-02-27
  • 打赏
  • 举报
回复
Mybatis中的foreach 会循环集合或者数组后拼出来一个in语句,看你这个in 的位置具体在SQL的整体位置,才能确定具体的影响
nayi_224 2019-02-27
  • 打赏
  • 举报
回复
代码发出来看看
ar 2019-02-27
  • 打赏
  • 举报
回复
你想说的是动态SQL 中的foreach? 这个foreach只是拼装SQL,在拼装完成后才会提交执行

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧