考えなしに N+1 にするなってことなんだろうけど、例があんまりピンとこない……
「データは、1件ずつ取ってきて、
Javaのループで処理しています」
新人のコードを見ていると、
ときどき出会う書き方です。
たとえば、会員が1万人いたら、
・まず会員を全件取ってくる
・ループの中で、1人ずつ注文をSQLで取りにいく
結果、SQLが1万回以上実行されます。
テストのデータが10件のときは、
何の問題もなく、サクサク動きます。
でも、本番のデータで動かした瞬間、
画面がまったく返ってこなくなります。
JavaとSQLは、それぞれ単体なら書ける人が多いです。
でも、実際の現場で問われるのは、
「どこまでをSQLでやって、どこからをJavaでやるか」の判断です。
・まとめて取れるものは、JOINやINでまとめて取る
・データベースが得意なことは、データベースに任せる
JavaもSQLも、
両方分かっていて、はじめて見えてくる問題があります。
だから私は、どちらか片方ではなく、
両方しっかり学んでほしいと思っています。
1
193



