文章目录

  • 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语句相关推荐

  1. php如何避免在循环中使用sql语句

    一.背景 众所周知的,在循环语句中执行数据库操作,对数据库来说负担很大. 举个例子: for(int I=0;I<500;I++){查询语句} 这样你的这个查询语句会执行500次,稍极端一点,忽 ...

  2. pdo_fetch执行mysql_PDO中执行SQL语句的三种方法

    在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO ...

  3. java sql范围查询语句,java类中写sql语句,查询条件包含换行

    java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...

  4. ef 执行mysql语句_在EF中执行SQL语句

    一.为什么要在EF中执行SQL语句 使用EF操作数据库,可以避免写SQL语句,完成使用Linq实现,但为什么还要在EF中执行SQL语句呢.如果要写SQL语句,完全可以使用ADO.NET来操作数据库.这 ...

  5. 存储过程中定义sql语句_学习SQL:用户定义的存储过程

    存储过程中定义sql语句 Stored procedures (SPs) are one more powerful database object we have at our disposal. ...

  6. 能不能在FOR循环中执行SQL?

    JDBC最基础的For循环处理SQL的方式 以及执行时间 package javaee.net.cn.jdbc; import java.sql.*; public class TestTransac ...

  7. 在EXCEL中使用SQL语句查询

    SQL语句在数据库使用中十分重要. 在EXCEL中可以不打开工作簿,就获取数据,对多工作簿操作很用,也很快. 对大量数据处理,比循环快很多,但是比词典方法还有点距离(可惜我还没有学会词典). 对数据库 ...

  8. java mysql查询字段换行,java类中写sql语句,查询条件包含换行

    java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...

  9. 在EF中执行SQL语句

    一.为什么要在EF中执行SQL语句   使用EF操作数据库,可以避免写SQL语句,完成使用Linq实现,但为什么还要在EF中执行SQL语句呢.如果要写SQL语句,完全可以使用ADO.NET来操作数据库 ...

最新文章

  1. Linux下C语言线程池的实现(1)
  2. 关于IT人职业道德的反思(转)
  3. 爱奇艺发布2018年Q2财报:总营收62亿元同比大增51%,会员收入达25亿元
  4. 去大厂也就图一乐,真人上人还得是外包
  5. python语言的读法-Python语言的优势有哪些?
  6. 通过SAXReader解析XML
  7. matlab中图例的字怎么改,如何在Matlab图形图例中设置自定义标记
  8. wincc逻辑运算符_WINCC常用功能
  9. 假定1km长的CSMA/CD网络的数据率为1Gbit/s。设信号在网络上的传输速率为200000km/s.求能够使用此协议的最短帧长。
  10. 三、GTK-按钮(微调按钮、复选按钮、单选按钮)、快捷键、热键
  11. 机器学习(线性回归实训)------波士顿房价
  12. 指纹锁的识别与原理及安全性
  13. 新意互动董事长兼CEO曲伟海出席2021中国企业家博鳌论坛
  14. 抖音直播带货数据复盘怎么做?如何复盘提高直播间转化率?
  15. win10安装openssl
  16. FreeModbus源码结构分析
  17. 关于前端上传文件到七牛云的一些笔记
  18. python将某个非格式化显示的json文件处理得到格式化显示
  19. Unity官方离线中文文档大集合
  20. LayUI 数据表格 分页失效

热门文章

  1. J2EE三层架构概述
  2. K8S使用Ceph RBD作为后端存储
  3. 神经网络种类及应用领域,常用的神经网络有哪些
  4. 怎样恢复计算机的开机桌面,电脑系统崩溃如何找回桌面文件?
  5. 推荐系统CTR(CVR)预估模型(多任务学习)之ESMM
  6. Hi3516芯片简介,Hi3516EV300处理器参数介绍
  7. 后台管理系统导出Excel表格的方法
  8. Visual Studio 2008 项目安装和部署
  9. java操作svn工具类
  10. FFmpeg给视频添加水印