また、ユーザからある程度のレスポンスを期待されていた。
以上のことから、処理方式をオンラインバッチ(擬似リアル)として、
業務処理をストアドプロシージャでの実装とする提案をした。
※業務ロジックは、基本的にJavaで実装されていたが、
JavaからDBにアクセスする際のオーバーヘッドが大きくなることを懸念して。
だが、出来上がったプログラムを実行しても処理が一向に終わらない。
すると、30分掛かってようやく終了。
こんなに時間が掛かるわけがないので、調査をしてみると、
「データが大量に増加したこと」
が起因していることが判明した。
Oracleは統計情報の収集を行っていて、
それを元に実行計画を立てている。
つまり、今回の事象を明示的に教えてやらなくてはいけないのだ。
統計情報を収集すると、僅か1分で処理が完了する結果となった。
ANALYZE TABLE テーブル名 COMPUTE STATISTICS;