SELECTで情報を取得して、ループの中で単純なINSERT文を何度も呼び出すみたいな処理を書いた経験は誰でもあるのではないでしょうか?これは非常に分かりやすい書き方なのでよく採用されますが、いくつかの問題点を含んでいます。
問題点
パフォーマンスが悪くなる。
一括でSQLを実行する場合に比べて圧倒的に性能は悪くなります。ネットワークアクセスが増えるためです。
また、一回で取得するデータ量も少量になるので、I/O負荷を並列に処理しずらくなります。
ケース
数百行程度のループであればそれほど問題になることはないと思います。ただ、数百万回だったり、数千万回だったりのループが発生する場合はこれが顕著になります。
この記事へのコメントはありません。