ALTER TABLE TO CURRENTリクエストを使用した結合インデックスの調整 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

ALTER TABLE TO CURRENT文は、インデックスを削除し、その後で再作成せずに結合インデックスの行を更新できます。インデックスを削除してから作成するというもう1つの方法と比べた場合、この方法を使用して結合インデックスの行を更新することの有効性は、次の2つの要因によって決まります。

  • 結合インデックスの行を更新するために、どのくらいの頻度でALTER TABLE TO CURRENTリクエストを実行する必要があるか
  • 結合インデックスの定義で指定される、DATE、CURRENT_DATE、またはCURRENT_TIMESTAMPの型の条件

結合インデックスで更新がほとんど必要なく、DATE、CURRENT_DATE、またはCURRENT_TIMESTAMPで「Teradata Databaseで古い行を大量に削除し、新しい多数の行を挿入する必要がある」という条件の場合は、通常、結合インデックスをいったん削除し、そのあとで再作成する方が効率的です。

明白な場合、例えば新しいDATE、CURRENT_DATE、またはCURRENT_TIMESTAMPの値のために、結合インデックスのプライマリ インデックス列が更新されたなどの場合には、ALTER TABLE TO CURRENTが結合インデックスからすべての行を内部で削除し、その後で新しいDATE、CURRENT_DATE、またはCURRENT_TIMESTAMPの値を使用して再作成する必要があります。

あまり明白でない場合、たとえばDELETE ALLオプションの後にインデックスの再作成操作を実行する方が効率が良いが、何らかの理由でALTER TABLE TO CURRENTでは使用されないという場合には、削除してから再作成するという方法を使用することを検討してください。この方法を使用することを決定した場合は、Teradata Databaseが結合インデックスを削除する際に、結合インデックスの既存の権限および統計を削除して、必ず、削除された権限を付与するのに必要な時間を考慮に入れて、これが良い方法かどうかを判断する際に統計を考慮してください。

基本テーブルとそのテーブルに定義された結合インデックスに対してALTER TABLE TO CURRENTリクエストを発行する必要がある場合は、最初に、下限のDATE、CURRENT_DATE、またはCURRENT_TIMESTAMP条件を指定する結合インデックスでのみ、ALTER TABLE TO CURRENTリクエストを実行するよう考慮する必要があります。下限のDATE、CURRENT_DATE、またはCURRENT_TIMESTAMPの条件とは、DATE、CURRENT_DATE、またはCURRENT_TIMESTAMPが最新の日付またはタイムスタンプの値に更新されたときに、j > CURRENT_DATEなどの条件を使用して、結合インデックスの行を削除するものです。

この方法の成果は、実テーブルでALTER TABLE TO CURRENTリクエストを実行した結果、(結合インデックス上のALTER TABLE TO CURRENTリクエストによって削除されている)これらの結合インデックスの行で、不必要に結合インデックスの保守を行なう必要がないということです。