入职三个月的菜鸟,因为工作需要这段时间优化了一下公司老系统的计算功能,以下是我自己摸索出来的一些心得。
公司老系统ssh做的,在写计算功能的时候通过for循环发送sql一个一个查数据,导致系统折旧功能的计算极其缓慢。在优化之初我以为是因为hql转换原生sql占用较长时间,但是在我用原生sql查询一遍以后一样缓慢。因此将调转开始研究如何减少hql语句的发送,也就是减少与数据库之间的连接次数。
事实证明可以将所需要查询的数据通过for循环放入list中,然后通过select * from xxxx where id in (list)这种方法去实现,但是这边要注意一个坑 那就是 in()括号里只能放1000个数据,所以1000个以上的数据需要拆封成两组用or连接以上是我自己参照网上写的自己写的处理1000以上数据的拼接方法,原生sql比较容易写。在需要从数据库获取大量数据的时候,尽量通过少量的sql去获得,然后通过内存来实现数据的分类,这样能很大程度上提升性能
版权声明:本文为qq_33770485原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。