循環中にデータベースにアクセスしないでください.データベースの性能に深刻な影響を与えます.


循環中にデータベースにアクセスしないでください.データベースの性能に深刻な影響を与えます.
まず、循環でデータベースの応用シーンを調べることができるかもしれません.ショッピングサイトには、商品の価格、商品の説明などの基本的な情報が二つあります.一つの表には商品の画像urlが格納されています.商品のリストを取得し、商品の基本的な情報と商品の画像を展示するとき、私たちは以下の疑似コードで実現することができます.
        ,
   for         ,
          id,       id   ,
                              
このような実現案はデータベースの性能に大きく影響します.for循環内部は毎回商品画像表を確認します.どのように商品リストの中に100件のデータがありますか?データベースの性能に深刻な影響を与えます.
解決策:sql文はwhere inを使って商品リストの中のすべての商品idの所属画像を一度に調べてから、業務ロジックの中で写真と写真の所属商品を分けます.
例えば、商品リストには3つの商品があります.idはそれぞれ1、2、3です.
SELECT goods_id,picture_url FROM goods_picture WHERE goods_id IN ("1","2","3")
中goods_Pictureは商品の写真表として検索した画像を所属商品のIDによって分けて、商品の写真と商品の他の情報を一つのjsonの対象に包装すればいいです.
以下は私のプロジェクトの中に商品の写真と商品の他の情報を入れたnodejsコードです.
for(var i = 0; i < result.length; i++) {
	for(var j = 0; j < result_picture.length; j++) {
		if(result_picture[j].goods_id == result[i].id) {
			if(result[i]['image_url']) {
				result[i]['image_url'].push(result_picture[j].picture_url);
			} else {
				var temporaryArray = [];
				result[i]['image_url'] = temporaryArray;
				result[i]['image_url'].push(result_picture[j].picture_url);
			}
		}
	}
}
コードはご参考までに.