クエリに基づく更新

8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c |その他| PL / SQL | SQL | RAC | WebLogic | Linux

ホーム “記事”その他 “ここ

この記事では、別のテーブルのデータを使用してテーブルを更新する方法について説明します。

  • セットアップ
  • サブクエリメソッド
  • インラインビューメソッド
  • MERGEステートメントメソッド

関連記事。

  • MERGEステートメント

セットアップ

DEST_TABテーブルには10,000行が含まれています。SOURCE_TABテーブルには5,000行が含まれ、各行にはDEST_TABテーブルの行と一致するキー値がありますが、列とDESCRIPTION列。

この時点では、DESCRIPTIONDEST_TABテーブルのdiv>列に「更新済み」という単語が含まれています。

SELECT COUNT(*)FROM dest_tabWHERE description LIKE "Updated%"; COUNT(*)---------- 0SQL>

目的は、 DEST_TABテーブルの行とSOURCE_TABテーブルのデータ。

サブクエリメソッド

T最初のオプションは、サブクエリを使用してDEST_TABテーブルを更新し、SOURCE_TABテーブルから正しいデータをプルすることです。 EXISTS述語が、SOURCE_TABDEST_TABテーブルから行を除外していることに注意してください。 >テーブル。これがないと、一致しない行の値がNULLに設定されます。

現在のデータボリュームの実行プランを以下に示します。

ワークロードが十分に大きく、サーバーが余分なワークロードに対処するには、PARALLELヒントを使用してこれを並行して実行できます。

インラインビューメソッド

2番目のオプション2つのテーブルをインラインビューとして結合し、それに基づいて更新を行うことです。

現在のデータボリュームの実行プランを以下に示します。

ワークロードが十分に大きく、サーバーは余分なワークロードに対処できます。PARALLELヒントを使用して、これを並行して実行できます。

更新される行数は、追加することで変更できます。インラインビューまたはメイン更新ステートメントのいずれかにWHERE句を追加します。

  • MERGEステートメント

これを希望します役立ちます。よろしくティム…

トップに戻る。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です