16.20 - 結合インデックス選択リスト - Teradata Database - Teradata Vantage NewSQL Engine

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-162K-JPN
Language
日本語 (日本)

結合インデックスの選択リストを指定することにより、インデックスの定義を構成する列と式のリストが定義されます。

集約関数SUM、MIN、MAX、およびCOUNTに結合インデックス定義の選択リストを使用して、集約結合インデックスを作成することもできます。

AS
結合インデックスに含める基本テーブルの列または式の定義の前に置くキーワード。
SELECT
結合インデックスに含める基本テーブル列または式の定義。
database_name.table_name
user_name.table_name
column_nameまたはROWIDを固有に識別する必要がある場合は、column_nameへの完全修飾パスを指定します。
結合インデックスは、最大1行レベルのセキュリティ テーブルを参照できます。行レベルのセキュリティ テーブルの結合インデックスを作成する場合は、インデックスの定義にテーブルのすべてのセキュリティ制約列を含める必要があります。
column_name
結合インデックスに含める基本テーブル列または式の名前。
非LOB XML、非LOB ST_GEOMETRY、非LOB JSON、および非LOB DATASETのデータ型を含む列を結合インデックスに含めることができます。ただし、これらのデータ型は結合インデックスのプライマリ インデックスに含めることはできません。
結合インデックスの列には、BLOB、CLOB、BLOBベースのUDT、CLOBベースのUDT、VARIANT_TYPE、ARRAY、VARRAY、LOB XML、LOB ST_GEOMETRY、LOB JSON、またはLOB DATASETのデータ型を含めることはできません。
partitionまたはpartition#L-nという名前のユーザー定義列を指定できます。nは、1から62の範囲です。
ただし、システム派生列のPARTITIONまたはPARTITION#Lnは、column_nameリストの一部に含めることはできません。
選択リスト内の式で定義される結合インデックスは、基本テーブル列を使用して定義された結合インデックスよりカバー範囲が限定されます。
ただし、単一テーブル結合インデックスの定義で複合式を定義する場合は、必ず統計を収集する必要があります。これは、最適化ルーチンはその統計を直接使用して、クエリー述部で指定された基本テーブル式の選択性を評価するためです。詳細は、<Teradata Vantage™ SQLリクエストおよびトランザクション処理、B035-1142>を参照してください。
UDT列または、以下を除く少なくとも1つの列を参照する式に基づいた式を作成できます。
  • 集約関数またはOLAP関数を伴う式
  • UDF式
  • DEFAULT、PARTITIONなどの明示的に禁止されている組み込み関数またはキーワード

    DEFAULT組み込み関数の詳細については、<Teradata Vantage™ SQL関数、式、および述部、B035-1145>を参照してください。PARTITIONキーワードの詳細については、<Teradata Vantage™ SQLデータ操作言語、B035-1146>を参照してください。これらの式は別名でなければなりません。そうでないと、システムはリクエスト側にエラーを返します。

    指定した2つの列が同じ名前である場合は、列別名を使用してその両方の名前に別名を指定する必要があります。 <Teradata Vantage™ SQL基礎、B035-1141>を参照してください。

    反復グループcolumn_nameリストも定義した場合、システムはcolumn_nameリストの各固有値を一度だけ格納します。

  • 反復グループcolumn_nameリストを定義した場合、固定グループcolumn_nameリストに指定できる列の合計数は64個までです。
  • 反復グループcolumn_nameリストを定義しない場合、固定グループcolumn_nameリストに指定できる列の合計数に制限はありません。

    最大数の制限は、行サイズの制限内で定義できる列の数によってのみ課されます。

    この制限は、参照される基本テーブルおよび結合インデックスごとに定義できる列は64列までという制限とは関係ありません。

参照されている基本テーブルおよび結合インデックスごとに、最大64列まで指定することができます。
ROWID
基本テーブルの行に関連付けられた内部行識別子を指定します。ROWID列のデータ型はBYTE(10)です。ただし、8バイト パーティションの場合はBYTE(16)です。最適化ルーチンが、部分的にしかカバーしないインデックスを基本テーブルに結合することによりカバーされない列にアクセスするには、column_nameリストまたはcolumn_nameリストのいずれかの値としてキーワードROWIDを指定します。
結合インデックスにプライマリ インデックス(パーティション化されているかいないかは問わない)が含まれている場合、オプションで、column_nameとシステム生成のROWID列に別名を指定することもできます。
結合インデックスが列パーティション結合インデックスである場合、次のルールが適用されます。
  • システム生成のROWID列を必ず指定し、それに対する別名も指定する必要があります。
  • 定義の選択リストでは、複数の列を括弧で区切ってグループ化することができます。Teradata Databaseは指定された列を同じ列パーティションに格納します。

    結合インデックスのPARTITION BY句のCOLUMNを指定することによっても列をグループ化することはできますが、列パーティション結合インデックスの選択リストとCOLUMN句で列をグループ化することはできません。

結合インデックス定義で複数のテーブルを参照する場合、それぞれのROWIDの指定を完全修飾する必要があります。
ROWIDを参照するGROUP BY句には、列別名が必要になります。GROUP BY仕様の列リスト引数では、リテラルROWIDは無効です。
結合インデックス定義の選択リスト内でROWID列別名を参照する場合、結合インデックスに対してセカンダリ インデックスを作成するCREATE INDEXリクエスト内でもその列別名を参照できます。ただし、CREATE INDEXリクエスト内でROWIDキーワードを直接参照することはできません。
ROWIDを指定できる場所は、CREATE JOIN INDEX文の最も外側にある選択リストだけです。
COLUMN
列パーティションを格納するためのCOLUMN形式。
通則として、Teradata Databaseは幅が狭い列パーティションにCOLUMN形式を割り当て、幅が広い列パーティションにROW形式を割り当てます。
結合インデックス定義の選択リストに含まれる列グループより前にCOLUMNを置くと、列または列グループはCOLUMN形式を使用してコンテナに格納されます。
COLUMNまたはROWの指定を省略すると、システムは列値の幅などの要因に基づいて、COLUMN形式とROW形式のどちらを使用するかを決定します。
ROW
列パーティションを格納するためのROW形式。
結合インデックス定義の選択リストに含まれる列グループより前にROWを置くと、列はROW形式を使用して副行に格納されます。
AUTO COMPRESS
NO AUTO COMPRESS
AUTO COMPRESSまたはNO AUTO COMPRESSを指定しなければ、Teradata Databaseは列パーティションの指定を開始するCOLUMNキーワードの後に指定された自動圧縮値を使用します。ここで自動圧縮値を指定しないと、システム デフォルトはAUTO COMPRESSになります。
自動圧縮の詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。