例: 列パーティション化された結合インデックスの作成 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ncd1596241368722.ditamap
dita:ditavalPath
ja-JP/ncd1596241368722.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

以下の一連の例のために、次のテーブルが作成されているとします。

     CREATE TABLE t1 (
       a INTEGER, 
       b INTEGER, 
       c INTEGER, 
       d INTEGER) 
     PRIMARY INDEX (a);

以下のCREATE JOIN INDEXリクエストは互いに同等です。

この例は、スパース結合インデックスを作成しますが、rwを含む列パーティションの形式を明示的に指定しません。パーティションの形式は、システムによって決定され、COLUMNになります。

     CREATE JOIN INDEX jt1 AS 
       SELECT ROWID AS rw, a, b 
       FROM t1 
       WHERE a < 10
     PARTITION BY COLUMN (rw NO AUTO COMPRESS, ROW(a, b));

この例は、rwを含む列パーティションのCOLUMN形式とオプションのNO PRIMARY INDEX句の両方を明示的に指定している点を除いて、前の例と同じです。

     CREATE JOIN INDEX jt1 AS 
       SELECT ROWID AS rw, a, b 
       FROM t1 
       WHERE a < 10
     NO PRIMARY INDEX
     PARTITION BY COLUMN (COLUMN rw NO AUTO COMPRESS, ROW(a, b));

この例は、rwを含む列パーティションの明示的な形式を指定しません。この場合、rwを含むパーティションの形式はシステムによって決定され、COLUMNになります。この例では、最初の例のリクエストに、オプションのNO PRIMARY INDEX句とその後にオプションのカンマ文字も追加しています。

     CREATE JOIN INDEX jt1 AS 
       SELECT ROWID AS rw, a, b 
       FROM t1 
       WHERE a < 10
     NO PRIMARY INDEX, 
     PARTITION BY COLUMN (rw NO AUTO COMPRESS, ROW(a,b));

この例は、パーティション式にrwを含む列パーティションのCOLUMN形式を明示的に指定していることと、NO PRIMARY INDEXの指定がパーティション化の後に移動している点を除いて、前の例と同じです。

     CREATE JOIN INDEX jt1 AS 
       SELECT ROWID AS rw, a, b 
       FROM t1 
       WHERE a < 10
     PARTITION BY COLUMN (COLUMN rw NO AUTO COMPRESS, ROW(a, b)),
     NO PRIMARY INDEX;

この例は、(ROWID AS rw)をグループとして指定していること、(ROWID AS rw)にNO AUTO COMPRESSを指定していること、そしてNO PRIMARY INDEX句を指定していない点を除いて、前の例と同じです。

     CREATE JOIN INDEX jt1 AS 
       SELECT (ROWID AS rw) NO AUTO COMPRESS, ROW(a, b)
       FROM t1 
       WHERE a<10
     PARTITION BY COLUMN;

この例は、PARTITION BY句の前にNO PRIMARY INDEXを明示的に指定している点を除いて、前の例と同じです。

     CREATE JOIN INDEX jt1 AS 
       SELECT (ROWID AS rw) NO AUTO COMPRESS, ROW(a, b)
       FROM t1 WHERE a<10
     NO PRIMARY INDEX 
     PARTITION BY COLUMN;

この例は、NO PRIMARY INDEX句とPARTITION BY句の間にカンマ文字を指定している点を除いて、前の例と同じです。インデックス リストの直前の項目がインデックス句の一部でないパーティション句である場合、カンマ文字は必須ですが、その他の場合はオプションです。

     CREATE JOIN INDEX jt1 AS 
       SELECT (ROWID AS rw) NO AUTO COMPRESS, ROW(a, b)
       FROM t1 
       WHERE a<10
     NO PRIMARY INDEX, 
     PARTITION BY COLUMN;

この例は、PARTITION BY句とNO PRIMARY INDEX句が前の例のリクエストでの配置から並べ替えられている点を除いて、前の例と同じです。

     CREATE JOIN INDEX jt1 AS 
       SELECT (ROWID AS rw) NO AUTO COMPRESS, ROW(a, b) 
       FROM t1 
       WHERE a < 10
     PARTITION BY COLUMN, 
     NO PRIMARY INDEX;

以下の一連のCREATE JOIN INDEXリクエストは、rwを含む列パーティションの形式がシステム決定ではなく明示的にCOLUMNに指定されている点を除いて、前の一連のCREATE JOIN INDEXリクエストと同等です。

     CREATE JOIN INDEX jt1 AS 
       SELECT ROWID AS rw, a, b 
       FROM t1 
       WHERE a<10
     PARTITION BY COLUMN (COLUMN rw NO AUTO COMPRESS, ROW(a,b));
     CREATE JOIN INDEX jt1 AS 
       SELECT ROWID AS rw, a, b 
       FROM t1 
       WHERE a<10
     NO PRIMARY INDEX 
     PARTITION BY COLUMN (COLUMN rw NO AUTO COMPRESS, ROW(a,b));
     CREATE JOIN INDEX jt1 AS 
       SELECT ROWID AS rw, a, b 
       FROM t1 
       WHERE a<10
     NO PRIMARY INDEX, 
     PARTITION BY COLUMN (COLUMN rw NO AUTO COMPRESS, ROW(a,b));
     CREATE JOIN INDEX jt1 AS 
       SELECT ROWID AS rw, a, b 
       FROM t1 
       WHERE a<10
     PARTITION BY COLUMN (COLUMN rw NO AUTO COMPRESS, ROW(a,b)), 
     NO PRIMARY INDEX;
     CREATE JOIN INDEX jt1 AS 
       SELECT COLUMN(ROWID AS rw) NO AUTO COMPRESS, ROW(a, b)
       FROM t1 
       WHERE a<10
     PARTITION BY COLUMN;
     CREATE JOIN INDEX jt1 AS 
       SELECT COLUMN(ROWID AS rw) NO AUTO COMPRESS, ROW(a, b)
       FROM t1 
       WHERE a<10
     NO PRIMARY INDEX PARTITION BY COLUMN;
     CREATE JOIN INDEX jt1 AS 
       SELECT COLUMN(ROWID AS rw) NO AUTO COMPRESS, ROW(a, b)
       FROM t1 
       WHERE a<10
     NO PRIMARY INDEX, 
     PARTITION BY COLUMN;
     CREATE JOIN INDEX jt1 AS 
       SELECT COLUMN(ROWID AS rw) NO AUTO COMPRESS, ROW(a, b)
       FROM t1 
       WHERE a<10
     PARTITION BY COLUMN, 
     NO PRIMARY INDEX;