关于如何解决for循环中的sql查询问题心得

     入职三个月的菜鸟,因为工作需要这段时间优化了一下公司老系统的计算功能,以下是我自己摸索出来的一些心得。
    公司老系统ssh做的,在写计算功能的时候通过for循环发送sql一个一个查数据,导致系统折旧功能的计算极其缓慢。在优化之初我以为是因为hql转换原生sql占用较长时间,但是在我用原生sql查询一遍以后一样缓慢。因此将调转开始研究如何减少hql语句的发送,也就是减少与数据库之间的连接次数。
    事实证明可以将所需要查询的数据通过for循环放入list中,然后通过select * from xxxx where id in (list)这种方法去实现,但是这边要注意一个坑 那就是 in()括号里只能放1000个数据,所以1000个以上的数据需要拆封成两组用or连接![在这里插入图片描述](https://img-blog.csdnimg.cn/20191024154538337.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNzcwNDg1,size_16,color_FFFFFF,t_70)以上是我自己参照网上写的自己写的处理1000以上数据的拼接方法,原生sql比较容易写。在需要从数据库获取大量数据的时候,尽量通过少量的sql去获得,然后通过内存来实现数据的分类,这样能很大程度上提升性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值