質問: 3 ``` 一応問題なく動作はしているのですが1ページの商品表示件数が100であれば 1ページで100クエリ発行することになり、負荷や速度面で不安があります。 1対1なら JOIN するところなのですが1対多の場合どうすべきかわかりません。 商品によっては画像がないものがあったり、3枚以上登録されているものもあります。 商品数は1〜2万程度で、画像総数は3〜6万枚あたりの規模です。 1ページ100クエリ程度なら気にしなくても良いのでしょうか?
回答: 100クエリ発行するのは、アクセスが集中したときのレスポンスに不安がありますね。 単独で実行したとしても多少遅く感じるかもしれません。 通常の考え方では、ページ内に表示する`products.id`を取得するのは事前に行っているでしょうから、そのクエリに`product_images`をJOINするのがいいと思います。 ``` SELECT * FROM products A LEFT JOIN ( SELECT * FROM product_images ) B ON A.id=B.id; WHERE {ページ内に表示する取得条件} ``` 申し訳ないのですが、products.id毎にレコード数を3件に抑制するクエリが思いつきませんでした。 他の回答で良いクエリがあればよいのですが...。 もしなかった場合は、このクエリを使って、あとはプログラム側で処理すればいけると思います。