17.00 - 17.05 - UPDATE操作の実行時に結合インデックスを保守するための最適化された方法 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLリクエストおよびトランザクション処理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
ユーザー ガイド
Publication ID
B035-1142-170K-JPN
Language
日本語 (日本)

影響を受ける結合インデックス行を直接アクセスにより探索可能にするUPDATEリクエストに対する最適化が行なわれています。例えば、UPDATEリクエストがプライマリまたはセカンダリの結合インデックスに対する探索条件を指定する場合、影響を受ける結合インデックス行は再生成されません。その代わりに、条件を満たす行を結合インデックスで直接探索し、状況に応じて変更することができます。

UPDATEの最適化のための前提条件

この最適化方法(つまり、直接更新方法)を使用するには、次の条件を満たしていなければなりません。

  • 結合インデックスへのプライマリまたはセカンダリ アクセス パスが存在する。
  • join_index_column_2が定義されている場合、join_index_column_1列に変更が加えられていない。
  • 結合インデックスの定義に含まれる結合条件列は変更されない。
  • 結合インデックスのプライマリ インデックス列は変更されない。

UPDATEリクエストの実行時に結合インデックスを保守するための最適化された方法の例

次はUPDATEリクエストの実行時に結合インデックスを維持するための最適化された方法の例です。

     EXPLAIN
     UPDATE lineitem
     SET l_quantity=l_quantity - 5
     WHERE l_orderkey=10;
   
      *** Help information returned. 11 rows.
      *** Total elapsed time was 1 second.
   
Explanation
-----------------------------------------------------------------------
  1) First, we execute the following steps in parallel.
       1) We do a single-AMP UPDATE from join index table
          df2.OrderJoinLine by way of the primary index
          "df2.OrderJoinLine.l_orderkey = 10" with a residual
          condition of ("df2.OrderJoinLine.l_orderkey = 10").
       2) We do a single-AMP UPDATE from df2.lineitem by way of the
          primary index "df2.lineitem.l_orderkey = 10" with no
          residual conditions.
  2) Finally, we send out an END TRANSACTION step to all AMPs involved
     in processing the request.
  -> No rows are returned to the user as the result of statement 1.