私はTeradata
&に新しく、DDL-DML
の両方のステートメントで作業することができました。テーブルのデータを更新するための最善のアプローチ - Teradata
私が観察したことの1つは、多くのレコードを持つテーブルのデータがUPDATE
になるまでに非常に遅いということです。
私は、このアップデートを実行するにはGoogle
で見つかった最も簡単な方法は、新しい値で更新する列の保持値にCASE
とINSERT-SELECT
文を書くことです。
しかし、この状況がData Warehouse
環境に到着したとき、何百万行ものテーブルを保持するテーブルから複数の列を更新する必要がある場合はどうなりますか? どのようなアプローチがベストになるのでしょうか?
INSERT-SELECT
のみOR MERGE-UPDATE
OR MLOAD
?
上記の方法のいずれかがこのUPDATE
操作に使用されていないかどうかはわかりません。
ありがとうございます!
インデックスを使用できない場合は、フル・テーブル・スキャンが必要ですが、通常は非常に高速です(プライマリ・インデックスまたはパーティション・カラムの更新は遅いですが、さらに、巨大な更新によって、巨大なTransient Jornalが生成される可能性があります。あなたのテーブルの行の数と更新された行の割合は何ですか?あなたのアップデートはどのようにコード化されていますか? – dnoeth
@Dnoeth現在のところ、実際には382,851,001行の行があります。しかし、これは週ごとの増分です。だから今私たちはINSERT-SELECTアプローチで大丈夫です。しかし、間もなくこれはスペースの制約のせいで私たちのケースでは失敗に終わります。 FYI、私たちは複数の列ユーザーを持っています.PI&テーブルはマルチリーゼです。通常、私たちはPIではない列についての更新が必要です。 – Aditya
任意のセカンダリ/結合インデックス? MERGEは通常UPDATEより優れています(スプーリングを避けるかもしれません)。あなたのアップデートはどのようにコード化されています巨大なSelectテーブルまたはソーステーブル? – dnoeth