パーティション プライマリ インデックスと非パーティション プライマリ インデックス - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

グローバル一時テーブル、揮発テーブル、および標準的な基本テーブルのプライマリ インデックスは、パーティション化をしてもしなくてもかまいません。非パーティションNoPIテーブルは、パーティション化するプライマリ インデックスがないため、列パーティション テーブルを除いて、パーティション化することはできません列パーティション テーブルを参照してください。

非パーティション プライマリ インデックスは、行がAMPに割り当てられる際に使用される従来のプライマリ インデックスです。行ハッシュの順序を維持することを別にすれば、一度AMPに対してハッシュされた後は、行の割当て処理の実行が付加的に行なわれることはありません。

パーティション プライマリ インデックス(PPI)では、AMP上のユーザー定義データ パーティションに行を割り当てることができ、プライマリ インデックス値に基づいて予測される範囲クエリーのパフォーマンスを強化します。詳細については、Teradata Vantage™ - データベースの設計、B035-1094およびTeradata Vantage™- SQLリクエストおよびトランザクション処理、B035-1142を参照してください。

パーティション化は、単一レベルまたは複数レベルで定義できます。複数レベルで定義されたPPIは、マルチレベルPPI、またはMLPPIと呼ばれます。

テーブルの組み合わせパーティションの数に応じて、そのパーティション番号は行ヘッダーの2バイトまたは8バイトを消費します。次のテーブルのとおりです。

テーブルの組み合わせパーティションの数 行ヘッダーでパーティション番号に使用するバイト数
  65, 535 2
> 65,535 8

ADDオプションを指定した単一レベル列パーティションも、行ヘッダーで2バイトを消費します。

パーティションの割当ては、パーティション式の定義方法に基づきます。マルチレベル パーティションのパーティション式は、どのような組み合わせでもCASE_N式またはRANGE_N式のみを使って定義する必要があります。関数CASE_NおよびRANGE_Nは、特に単純なパーティション式をサポートするように設計されています。Teradata Vantage™ - SQL関数、式、および述部、B035-1145を参照してください。ただし、単一レベルのパーティションのパーティション式として、有効なSQL式をどのようにでも作成できますが、以下の例外があります。
  • Kanji1またはKanjiSJISのサーバー文字セットを使用した、列または式を含むCHARACTERデータまたはCHARACTER SET GRAPHICデータの比較。
  • 任意の種類のユーザー定義関数
  • 集約関数
  • 順序付き分析関数
  • 組み込み関数
  • RANDOM関数
  • HASHAMPおよびHASHBAKAMP関数

    HASHROWおよびHASHBUCKETされる許可されています。

  • システム派生PARTITION列およびPARTITION#Ln
  • 集合演算子
  • Subquery
  • BLOB、CLOB、またはGeospatialデータ型の列。
単一レベル パーティションのパーティション式は、次の一般的な形式に基づくことができます。
  • 数値列での直接パーティション
  • 1つ以上の列に基づく式
  • CASE_N関数に基づく式
  • RANGE_N関数に基づく式

それぞれのパーティション戦略のさまざまな使用方法の考慮事項についての詳細は、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。

マルチレベル パーティションのパーティション式は、次の一般的な形式の任意の組合わせにのみ基づくことができます。
  • CASE_N関数に基づく式(詳細は<Teradata Vantage™ - データベースの設計、B035-1094>参照)。
  • RANGE_N関数に基づく式(詳細は<Teradata Vantage™ - データベースの設計、B035-1094>参照)。

次の表に、パーティション式に対するCASE_N関数およびRANGE_N関数の使用方法の意図を示します。

使用する関数 マッピングの定義
CASE_N INTEGERメンバーに対する条件の間
RANGE_N INTEGERまたはDATE値からINTEGER数の範囲

パーティション化されたテーブルに定義できるパーティション式には、その中に指定できるデータ型、および関数の結果のデータ型に関して、特定の制限があります。

以下の表にその制約のサマリーを示します。

データ型 PARTITION BY
RANGE_N CASE_N
ARRAY

VARRAY

N N N
BIGINT Y X I
BLOB N N N
BYTE X X X
BYTEINT Y X I
CHARACTER Y X I
CLOB N N N
DATE Y X I
DECIMAL

NUMERIC

X X I
NUMBER (正確な形式) X X I
DOUBLE PRECISION

FLOAT

REAL

X X I
NUMBER (概算形式) X X I
GRAPHIC N X N
INTEGER Y X Y
INTERVAL YEAR X X I
INTERVAL YEAR TO MONTH X X X
INTERVAL MONTH X X I
INTERVAL DAY X X I
INTERVAL DAY TO HOUR X X X
INTERVAL DAY TO SECOND X X X
INTERVAL SECOND X X X
LONG VARCHAR Y X I
LONG VARCHAR CHARACTER SET GRAPHIC N N N
PERIOD

BEGIN境界関数およびEND境界関数は、有効なPERIOD列で定義されている場合に、パーティション式で有効になり、結果は数値データ型に暗黙にキャストできます。

N X N
SMALLINT Y X I
TIME X X X
TIME WITH TIME ZONE X X X
TIMESTAMP Y X X
TIMESTAMP WITH TIME ZONE Y X X
UDT N N N
VARBYTE X X X
VARCHAR Y X I
VARGRAPHIC N N N
JSON N N N
XML N N N

次の表は、上記のテーブルで使用されている省略語について説明します。

キー
記号 定義
I パーティション式で有効です。

型が結果のデータ型でもある場合、有効なINTEGER値にキャストできる必要があります。

N パーティション式で無効です。

パーティション式がCASE_N関数を使用して定義されている場合、この型はCASE_N条件で有効ではない

X パーティション式で有効ですが、式の結果のデータ型にすることはできません。

パーティション式がCASE_N関数を使用して定義されている場合、この型はCASE_N条件で有効

Y パーティション式で有効であり、パーティション式の結果のデータ型として有効です。