1億5000万レコードのテーブル内の列(すべての行)を更新するような状況があります。前のテーブルの更新とドロップで複製テーブルのOracle12cでの一括更新
作成が最善の方法ですが、重複したテーブルを保持するために使用可能なディスクスペースがありません。 アップデートを短時間で実行する方法は?テーブルにはパーティションがあります。 私はクリーンなアプローチは、テーブルを更新していないOracle 12cの
1億5000万レコードのテーブル内の列(すべての行)を更新するような状況があります。前のテーブルの更新とドロップで複製テーブルのOracle12cでの一括更新
作成が最善の方法ですが、重複したテーブルを保持するために使用可能なディスクスペースがありません。 アップデートを短時間で実行する方法は?テーブルにはパーティションがあります。 私はクリーンなアプローチは、テーブルを更新していないOracle 12cの
を使用しますが、更新された行の新しい列を持つ新しいテーブルを作成しています。たとえば、のは、私が列を更新するために必要な言わせていくつかの値の最大値とold_value
と呼ばれる、代わりのOLD_TABLE 1を更新することはありません:
create new_table as select foo, bar, max(old_value) from old_table;
drop table old_table;
rename new_table as old_table.
あなたも、もっとスピードが必要な場合は、パラレルを使用して、この作成を行うことができますnologgingを使ってクエリを実行すると、ほとんどやり直しログが生成されません。詳細はこちらを確認することができます:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:6407993912330
は私たちにあなたが実行したいアップデートを表示します。 –
これは、移入する新しい列か、修正したい既存の列ですか?更新された値はこのテーブルの列から派生したものか、他のテーブルから値を取得する必要がありますか? – APC
既存の列のために私はsubstr(column_name、1,5)のような文字をマスクする必要があります|| 'XXXX' @ APC – siva