マイクの答えは(マシン、コンフィグレーション、データの量によって異なります)の「隠されたI/O」についての重要な問題を持っている...
はあなたの場合は非常におそらく多くのレコードを更新する必要があります.Mykeが提案するオプションは最も有用なものです。
多くのレコードを更新する必要がない場合は、別のアプローチがかなり速くなる可能性があります(ベンチマークが必要です)。):
- あなたが唯一のいくつかの値とレコードを変更する場合は、メモリ内のインデックス付きVSAM検索
- ストア変更されたレコードを経由してすべてのキーを(大きなテーブルを発生する)読みがかなり大きいですのみ可能なすべての変更された値を保存しますVSAM検索を行う前に、実際の
REWRITE
- のないテーブルで+キー:あなたはすでにキー を読めば、テーブルを発生し、あなたに見て、そこからか、新しい
- を得るのいずれかの値を取る...
プログラム終了時に
- :あなたを通過「あなたのデータと可能なプログラムの流れを知っている:rは
パフォーマンスがしばしばある(あなたは、REWRITE
が十分にある完全な記録を持っている場合、そうでなければ、完全なレコードを取得するためにREAD
最初に必要があると思います)すべてのレコードを発生し、REQRITE
ベスト2-3のアプローチを試し、ベンチマークして決定してください。
あなたはすでに2つの答えにいくつかの良いアドバイスがあります。しかし、十分な詳細がないので、あなたの質問に対する特定の答えは不明です。同じバッチプログラムから同じKSDSレコードを複数回更新することは珍しいことです。両方のデータセットを同じキー順に並べ、「ステップ内で」読むことができる「2ファイル一致」がありません。あなたのKSDS全体でかなり低いレベルの「ヒット」で(これは更新がなくても)これが行く方法かもしれません。しかし、...あなたのデータを知っていることは不可欠です。悪いコード/悪い考えが通常のパフォーマンスの問題です。 –