Oracle 統計情報

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

                     ANALYZE TABLE テーブル名 COMPUTE STATISTICS;