データのロードが完了した後または前にインデックスを作成する方が効率的ですか、それとも関係ありませんか?
たとえば、Postgres 8.4 DB にロードするファイルが 500 個あるとします。使用できる 2 つのインデックス作成シナリオを次に示します。
- テーブルの作成時にインデックスを作成し、各ファイルをテーブルにロードします。また
- すべてのファイルがテーブルにロードされた後、インデックスを作成します。
テーブル データ自体は約 45 ギガバイトです。インデックスは約 12 ギガバイトです。私は標準的なインデックスを使用しています。次のように作成されます。
CREATE INDEX idx_name ON table_name (column_name);
私のデータ読み込みはCOPY FROMを使用しています。
すべてのファイルが読み込まれると、テーブルで更新、削除、または追加の読み込みが行われることはありません (変更されない 1 日分のデータです)。では、どのシナリオが最も効率的かを尋ねたかったのです。最初のテストでは、すべてのファイルをロードしてからインデックスを作成する (シナリオ 2) 方が高速であることが示されているようですが、2 つのアプローチの科学的な比較は行っていません。