O(n^2)

仕事中、DBのデータをFETCHして処理(ループ処理になる)してる中で、さらにSQLを発行するようなソースを散見するのですが、みんなそういうものですか…?それとも、私の周りだけ…?

データ量が増えると、FETCHして回すループが増え、ついでにSQLの発行は基本的に重い処理なので、大変なことになります。今回のもデータが2倍になったらキレイに実行時間が4倍になっててワラタ。ちょっと眺めてたら、FETCHする必要がぜんぜん無い処理だったので、チャイチャイっと修正したら30分の処理が3秒になった…。あまりの変化に、なんかズルしてんじゃねえか?って信用してもらえなくて、よっぽど空SLEEPとかして時間稼ぎしてやろうかと思いましたよ。

まあ、SQL発行は重いものだーってのもいっぱい失敗やらかして実感するようになったわけで、数年前の馬鹿な頃は私もそんなソースを書いてたりしてて、ゲラ笑いするつもりは無いんだけど、そういうクリティカルなリテラシを身に着ける機会が、自学するか、たまたま居た隣のひとに教わるかくらいしか無いのが問題だよなー。仕事でやることだけだと知識がスゲー偏る。さりとて、趣味で情報工学に触れる奴なんてそんな居ないわけで。。。それなりに経験積んだハズのひとでもオモシロソース書いてたりするのがなんとも。

それとも、私の周りだけ?