17.05 - selection - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-175K-JPN
Language
日本語 (日本)
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列を必ず指定し、それに対する別名も指定する必要があります。
  • 定義の選択リストでは、複数の列を括弧で区切ってグループ化することができます。Vantageは指定された列を同じ列パーティションに格納します。

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

結合インデックス定義で複数のテーブルを参照する場合、それぞれのROWIDの指定を完全修飾する必要があります。
ROWIDを参照するGROUP BY句には、列別名が必要になります。GROUP BY仕様の列リスト引数では、リテラルROWIDは無効です。
結合インデックス定義の選択リスト内でROWID列別名を参照する場合、結合インデックスに対してセカンダリ インデックスを作成するCREATE INDEXリクエスト内でもその列別名を参照できます。ただし、CREATE INDEXリクエスト内でROWIDキーワードを直接参照することはできません。
ROWIDを指定できる場所は、CREATE JOIN INDEX文の最も外側にある選択リストだけです。