17.10 - UNIQUE INDEX - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)

テーブルの固有セカンダリ インデックス(USI)を定義します。

index_name
インデックスに対するオプションの名前。
データベース オブジェクトの命名ルールについては、<Teradata Vantage™ - SQLの基本、B035-1141>を参照してください。
index_column_name
値がセカンダリ インデックスの基礎として使用される列セット。
リスト内の列には、BLOB、CLOB、Period、XML、Geospatial、JSON、またはDATASETのデータ型があってはなりません。
複数の列名を指定すると、インデックスは指定された各列が組み合わせられた値に基づいて作成されます。1つのインデックスに対して最大64個の列を指定することができます。1つのテーブルに最大32個のセカンダリ インデックスを作成することができます。

WITH LOAD IDENTITY

ロード分離テーブルで作成されたインデックスのRowLoadIDを記録します。

このオプションは、ロード分離テーブルで作成されたインデックスに指定できます。

NO
NUSIのROWIDを持つRowLoadIDは記録しません。実行は、インデックス行からの修飾されたROWIDを使用して、コミット済みのプロパティの決定に使用する必要があります。このインデックスはより簡素で維持しやすい場合がありますが、読み込み処理はインデックスの利便性が制限され、通常のNUSIベースのオプションよりはコストがかかります。

例: プライマリ インデックスで定義されているUSIのあるマルチレベル パーティションNUPI

次の例では、両方のパーティション式の基礎としてRANGE_N関数を使用して、2つのレベルのPPI表が作成されます。どちらのパーティション列もプライマリ インデックスのコンポーネントではないため、そのインデックスはNUPIとして定義される必要があります。固有性を強制するには、o_orderkeyにUSIを定義する必要があります。

     CREATE TABLE orders (
       o_orderkey      INTEGER NOT NULL,
       o_custkey       INTEGER,
       o_orderstatus   CHARACTER(1) CASESPECIFIC,
       o_totalprice    DECIMAL(13,2) NOT NULL,
       o_orderdate     DATE FORMAT 'yyyy-mm-dd' NOT NULL,
       o_orderpriority CHARACTER(21),
       o_clerk         CHARACTER(16),
       o_shippriority  INTEGER,
       o_comment       VARCHAR(79))
     PRIMARY INDEX (o_orderkey)
     PARTITION BY (RANGE_N(o_custkey   BETWEEN 0 
                                       AND 49999 
                                       EACH  100),
                   RANGE_N(o_orderdate BETWEEN DATE '2000-01-01' 
                                       AND     DATE '2006-12-31'
                                       EACH INTERVAL '1' MONTH))
     UNIQUE INDEX (o_orderkey);