Java教程

不要在循环中访问数据库,这样会严重影响数据库性能

本文主要是介绍不要在循环中访问数据库,这样会严重影响数据库性能,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

不要在循环中访问数据库,这样会严重影响数据库性能

先说一个可能会在循环中查询数据库的应用场景:
购物网站,有两个基本表,一个表存储商品的基本信息,比如商品价格,商品描述…,一个表存储商品的图片url,当我们要获取商品的列表,展示商品的基本信息及商品的图片时,我们可能会用以下的
伪代码来实现:

先去获取商品列表,
然后用for循环来循环商品列表,
在循环体内根据商品的id,再去获取该商品id的图片,
然后再将商品的基本信息和查询出来的商品图片数组拼接成一个对象

这样的实现方案会严重影响数据库的性能,因为for循环内部每次都要查询一遍商品图片表,如何商品列表里面有一百条数据,我们就相当于要查询100遍商品图片表,查询数据库需要占用时间,消耗资源,连接数据库也需要占用时间,消耗资源,所以说会严重影响数据库的性能

解决方案:
sql语句使用where in先把商品列表里面所有商品id的所属图片一次性查询出来,然后再在业务逻辑里面把图片和图片所属的商品分好。

举个例子:
商品列表里面有3件商品,id分别为1,2,3,我们就可以这样写sql语句

SELECT goods_id,picture_url FROM goods_picture WHERE goods_id IN ("1","2","3")

其中goods_picture为商品图片表
然后再把查询出来的所有图片根据其所属的商品的id分开,并且把商品图片和商品的的其他信息封装成一个json对象就行

这篇关于不要在循环中访问数据库,这样会严重影响数据库性能的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!