閃きの神様は無理矢理降臨させるものかも?

お仕事でそれなりの量というか今後爆発的に増えるであろうデータに対してややこしい処理をする必要があったんですが、データ量が相当増えそうなのでとりあえずの方針は

  • DBMSに優しく
  • メモリに優しく
  • CPUに厳しく


という感じで考えて馬鹿正直に組んでみたら、処理に1日以上かかりそうなアホプログラムが出来てしまいました (´・ω・`)
まぁ、ある意味月末までの間に処理が完遂すればいいんで十分っちゃー十分なんですが、さすがに遅すぎる。
というわけで、DBMS様にちょっと頑張って貰おうと方針転換したんですが、頑張って貰うにも副問い合わせ使わない事にはどーしょもない感じのデータ構造。
でも使ってるDBMSMySQL 4.0系なので副問い合わせが出来ない (;´-`)=3
そんなわけで、副問い合わせ使わないでも何とかなるようなスペシャルソリューションをお持ちの閃きの神様が降臨せんかなぁとか神様頼みをしてたんですが、いっこうに降臨してくれず。


と言うわけで途中から方針転換して、今困ってる原因は何だ?? っての片っ端から潰してみる事に。
一番やっかいなのは副問い合わせが出来ない事。
逆に言えば副問い合わせ出来れば結構解決するはず。
そんならば・・・

Javaで副問い合わせ的な事出来るようにすれば良いじゃん


という激しく当たり前な考えに行き着き、Iteratorやらなんやらを組み合わせてさくっと副問い合わせに近い問い合わせが出来るようにしてみたら思ったよりも良い感じ ( ´¬`)
他も色々最適化してみて結果としては

  • DBMSにほどほどに厳しく
  • メモリにはほどほどに優しく
  • CPUは限界までこき使う


な感じになったんですが、処理時間が10分ちょいまで縮んだんで良い感じかなー。
元のプログラムがドンだけいけてないんだっつー話もあるんですが (*ノωノ)


当たり前なのかもですが、一番困ってる事から潰していくってのがなんだかんだ行っても近道なのかも。
副問い合わせ諦めて、小手先の修正ばっかりやってたとしたら絶対ここまで早くなってないし・・・