一時的に使用するステージングテーブルを作成する - Amazon Redshift

一時的に使用するステージングテーブルを作成する

ステージングテーブルは、ターゲットテーブルを変更 (更新、挿入含む) する際に使用するデータすべてを一時的に保持するためのテーブルです。

マージ操作では、ステージングテーブルとターゲットテーブルを結合する必要があります。結合する列をコロケーションするには、ステージングテーブルの分散キーを、ターゲットテーブルの分散キーと同じ列に設定する必要があります。例えば、ターゲットテーブルが分散キー列に外部キーを使用している場合には、ステージングテーブルの分散キーと同じ列を使用する必要があります。CREATE TABLE LIKE ステートメントを使用してステージングテーブルを作成すると、ステージングテーブルが親テーブルから分散キーを継承します。CREATE TABLE AS ステートメントを使用する場合、新しいテーブルは分散キーを継承しません。詳細については、「クエリ最適化のためのデータのディストリビューション」を参照してください。

分散キーがプライマリキーと異なり、マージ操作の一環として分散キーが更新されない場合には、分散キー列の冗長結合述語を追加し、コロケーテッド結合を実現します。次に例を示します。

where target.primarykey = stage.primarykey and target.distkey = stage.distkey

クエリでコロケーテッド結合を使用するかどうかを確認するには、EXPLAIN を使用してクエリを実行し、結合すべてに DS_DIST_NONE があるかどうかを確認します。詳細については、「クエリプランの評価」を参照してください。