索引ファイルの再編成

ファイルを再編成するためのコマンド ラインの形式は次のとおりです。

rebuild in-file,out-file
[-c] [-d] [-i] [-k] [-n] [-p] [-s] [-v] [-x]

索引ファイルがレコードの追加、削除、変更などにより更新されると、索引構造とデータ構造がばらばらになるため、処理効率が悪くなります。さらに、削除されたレコードに残された領域は常に再使用されるわけではないため、ファイルが必要以上に大きくなってしまいます。

多くの変更を行った場合、索引ファイルを再編成して、データと索引を順序正しくリビルドし、空き領域を再利用できるようにすると便利です。この作業により、最適なパフォーマンスとデータの整合性が保証されます。

ファイルを再編成する利点は他にもあります。たとえば、ファイルを順編成処理する場合、ファイルを処理するためのアクセス時間は時間が経つにつれて増えます。これは、レコードが更新され、順序が変更されるためです。このような場合にファイルを再編成すると、アクセス時間を短縮できます。

3 つ目の理由は、重複キー チェーンをリビルドすることです。重複キーには重複オカレンスの数が追加され一意に識別されます。重複キーが新たに追加されるとそのキーに、最後に追加されたキーのオカレンス値を 1 つインクリメントした数値が使用されます。キーが削除されても、残りのキーのオカレンス値は変更されません。つまり、一部のキーをすでに削除した場合でも、重複値の最大回数に到達する可能性があります。このような状況では、ファイルを再編成することが得策です。重複キーの詳細については、「ファイル編成」の「重複キー」を参照してください。

次に例を示します。

rebuild infile.dat,outfile.dat

この例では、リビルドは索引ファイル (infile.idx) を使用してデータ ファイル (infile.dat) を読み込み、出力ファイル (outfile.dat) を作成します。infile.dat の削除されたレコードは出力ファイルに書き込まれません。

注: 入力ファイルおよび出力ファイルには同じファイル名を使用できません。