INDEX - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/spp1591731285373.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

結合インデックスに対して定義される非固有セカンダリ インデックスのセット。

index_name
定義するNUSIのオプションの名前。データベース オブジェクトの命名ルールについては、<Teradata Vantage™ - SQLの基本、B035-1141>を参照してください。
ALL
定義するNUSIが、圧縮された物理行のみの代わりに、結合インデックスの論理行ごとの行IDのポインタを維持するためのものです。
ALLを指定すると、データ型のNOT CASESPECIFIC属性も無視されるため、NUSIではケース指定(大文字小文字の区別のある)の値を含むことができるようになります。
ALLによってNUSIは結合インデックスを対象に含めるようになり、これにより、問合わせに必要なすべての値がセカンダリ インデックス内にあるときは、結合インデックスへのアクセスが不要になることでパフォーマンスが向上します。ただし、ALLではインデックスのストレージ領域の追加使用が必要になる場合もあります。
このキーワードは、セカンダリ インデックスを結合インデックスの最上位に対して定義する場合にのみ使用します。
ALLは、PRIMARYインデックスとともに指定することはできません。
ALLオプションの有無のみが異なる複数のインデックスを指定することはできません。
index_column_name
値がこの結合インデックスのインデックスになる列セット。複数の列を指定した場合、新しいインデックスは各列の値を組み合わせたものに基づいたものになります。
1つのインデックスには、最大で64列を定義できます。
それぞれのインデックスのその順序付けオプションが異なる限り(例えば、VALUESまたはHASH)、複数のインデックスを同じ列に定義することができます。
同じ名前の列を2つ指定する場合は、その両方に対して固有の列別名を使用して別名を指定する必要があります。 <Teradata Vantage™ - SQLの基本、B035-1141>を参照してください。
セカンダリ インデックス内の列は、次のデータ型のいずれかにすることはできません。
  • Period
  • Geospatial
  • BLOB
  • CLOB
  • ARRAY/VARRAY
index_column_nameリスト内で、システム派生列のPARTITIONまたはPARTITION#Ln(nは1から62までの整数)を指定することはできません。ただし、PARTITIONまたはPARTITION#L nという名前のユーザー定義列は指定できます。
ORDER BY
単一のNUSI列による、各AMP上の行の順序付け。NUSI列値の順序付けは、値順またはハッシュ順にすることができます。ORDER BY句を使用して定義されるそれぞれの複数列NUSIは、1つの結合インデックスにつき32個という制限に対して2つの連続したインデックスとカウントされます。ORDER BY句は、パーティション プライマリ インデックスと同じ結合インデックス定義に指定することはできません。
ORDER BY句の指定のルールを次に示します。
  • ORDER BY VALUESを指定する場合、column_nameは4バイト以下の数値でなければなりません。

    ORDER BY VALUESはUDT列ではサポートされません。

  • HASHキーワードもVALUESキーワードも付けずにORDER BYを指定する場合、デフォルトでVALUESが想定されます。
  • ORDER BY column_nameは、選択リストに指定された列の1つでなければなりません。
  • システム派生PARTITION列をORDER BY列として指定することはできません。
partitionという名前のユーザー定義列を指定することはできます。
VALUES
ORDER BY列の値による順序付け。これはデフォルトの指定です。
ORDER BY VALUESはUDT列ではサポートされません。
連続した値の範囲を返す問合わせを最適化する場合は、VALUESを選択します(特に、カバー インデックスまたは入れ子結合の場合)。
HASH
ORDER BY列に対するハッシュ順。
ORDER BY HASHはUDT列に指定することができます。
ハッシュ順をプライマリ インデックスのすべての列にではなく(デフォルト)、1つの列だけに限定する場合は、HASHを選択します。
NUSIが複数の列に設定されている場合、そのいずれかの列でNUSIをハッシュ順にすると、結合条件にその列だけがかかわっている場合に、入れ子結合に対してインデックスを加わらせることができます。
order_column_name
NUSIの順序付けに使用する並び替え順を指定する、選択リスト内の1つの列。
結合インデックス内の列は、Geospatial、BLOB、CLOB、XML、LOB UDT、XML UDT、VARIANT_TYPE、またはARRAY/VARRAYデータ型であってはなりません。
システム派生列PARTITIONまたはPARTITION#Ln(nは1以上62以下の整数)を、column_name_2リストの一部として指定することはできません。
ただし、PARTITIONまたはPARTITION#L nという名前のユーザー定義列は指定できます。
値順に並べ替えられた4バイト以下のcolumn_name_2のデータ型としてサポートされているものは、次のとおりです。
  • BYTEINT
  • DATE
  • DECIMAL
  • INTEGER
  • SMALLINT