避免在for循环中使用sql语句
文章目录
- for循环中使用sql语句
- 一个大sql实现功能
- 2个for循环用java遍历
- 用sql搞崩一个项目
这是个基本常识额,在这里再赘述一下。
例如一个大sql查出100条结果,现在每条记录要关联显示一条其他数据。该怎样做?
for循环中使用sql语句
最简单的一种方式就是for循环中使用sql语句。根据关联字段查出对应的数据。
优点:
实现简单快速,在2个表都有基本Mapper的情况下,不用新增任何基础类,直接可以拼凑逻辑。
缺点:
整个接口速度慢,例如list有100条结果,每条都遍历查库,需要查100次库。
而建立session访问数据库是较耗时的操作,最简单的一个session也要20ms左右。
光和数据库交互就要2秒,更何况还有其他逻辑。
大量查询拉低数据库性能, 数据库的连接数是有限的,因为有限,所以珍贵。
即使配置了连接池,有效的提高了和数据库交互的效率。 仍应避免大量频繁查询。
for循环中使用sql语句,有个明显的现象是第一次查询速度很快,越查询越慢。
这是个很反常的现象,因为oracle有缓存的机制,按道理说该第一次查询慢,越查询越快。
那么为什么会出现这种情况呢?
是因为每次这种for循环查询,会大量请求数据库,造成通道拥堵。所以越查越慢。
一个大sql实现功能
上面说了,for循环sql语句效率太低。
那么该怎么办呢?
一个大sql实现功能。
优点:
如果功能确定,且不轻易修改。这种方式是很好的,因为高度定制,可以尽可能的优化sql语句。往往可以写出性能很好的sql语句。
缺点:
如果该sql频繁需要扩展,高度定制的方式就不太适合。每次扩展,都要进行调整。不但工作量大,而且容易出错。一不小心,辛辛苦苦优化的sql就变成木柴了。
2个for循环用java遍历
如果语句好调整,一条sql出结果最好。
实在不行的话,也可以用foreach标签,将关联表的数据查为一个list。
哪怕在java中有2个for循环呢,效率也比直接for循环sql查库好。
因为查出2个list,用2次sqlSession即可,是绝对比for循环调用n次好。
用sql搞崩一个项目
不用什么大sql,直接来个10000次的for循环。 每个循环里面一个sql就行,数据库基本就崩了。
避免在for循环中使用sql语句相关推荐
- php如何避免在循环中使用sql语句
一.背景 众所周知的,在循环语句中执行数据库操作,对数据库来说负担很大. 举个例子: for(int I=0;I<500;I++){查询语句} 这样你的这个查询语句会执行500次,稍极端一点,忽 ...
- pdo_fetch执行mysql_PDO中执行SQL语句的三种方法
在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO ...
- java sql范围查询语句,java类中写sql语句,查询条件包含换行
java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...
- ef 执行mysql语句_在EF中执行SQL语句
一.为什么要在EF中执行SQL语句 使用EF操作数据库,可以避免写SQL语句,完成使用Linq实现,但为什么还要在EF中执行SQL语句呢.如果要写SQL语句,完全可以使用ADO.NET来操作数据库.这 ...
- 存储过程中定义sql语句_学习SQL:用户定义的存储过程
存储过程中定义sql语句 Stored procedures (SPs) are one more powerful database object we have at our disposal. ...
- 能不能在FOR循环中执行SQL?
JDBC最基础的For循环处理SQL的方式 以及执行时间 package javaee.net.cn.jdbc; import java.sql.*; public class TestTransac ...
- 在EXCEL中使用SQL语句查询
SQL语句在数据库使用中十分重要. 在EXCEL中可以不打开工作簿,就获取数据,对多工作簿操作很用,也很快. 对大量数据处理,比循环快很多,但是比词典方法还有点距离(可惜我还没有学会词典). 对数据库 ...
- java mysql查询字段换行,java类中写sql语句,查询条件包含换行
java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...
- 在EF中执行SQL语句
一.为什么要在EF中执行SQL语句 使用EF操作数据库,可以避免写SQL语句,完成使用Linq实现,但为什么还要在EF中执行SQL语句呢.如果要写SQL语句,完全可以使用ADO.NET来操作数据库 ...
最新文章
- Linux下C语言线程池的实现(1)
- 关于IT人职业道德的反思(转)
- 爱奇艺发布2018年Q2财报:总营收62亿元同比大增51%,会员收入达25亿元
- 去大厂也就图一乐,真人上人还得是外包
- python语言的读法-Python语言的优势有哪些?
- 通过SAXReader解析XML
- matlab中图例的字怎么改,如何在Matlab图形图例中设置自定义标记
- wincc逻辑运算符_WINCC常用功能
- 假定1km长的CSMA/CD网络的数据率为1Gbit/s。设信号在网络上的传输速率为200000km/s.求能够使用此协议的最短帧长。
- 三、GTK-按钮(微调按钮、复选按钮、单选按钮)、快捷键、热键
- 机器学习(线性回归实训)------波士顿房价
- 指纹锁的识别与原理及安全性
- 新意互动董事长兼CEO曲伟海出席2021中国企业家博鳌论坛
- 抖音直播带货数据复盘怎么做?如何复盘提高直播间转化率?
- win10安装openssl
- FreeModbus源码结构分析
- 关于前端上传文件到七牛云的一些笔记
- python将某个非格式化显示的json文件处理得到格式化显示
- Unity官方离线中文文档大集合
- LayUI 数据表格 分页失效