17.10 - PARTITION BY - 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
日本語 (日本)

結合インデックスは、1つ以上のパーティション レベルでパーティション化されます。結合インデックスには単一レベル パーティションまたはマルチレベル パーティションのいずれかを定義できますが、インデックスが行圧縮されない場合だけです。

PARTITION BY句を同じ結合インデックス定義にORDER BY句として指定することはできません。

結合インデックスのシステム派生PARTITION#Ln列の統計を収集できません。

partitioning expression
レベルにパーティションを定義します。パーティション レベルには、ADDキーワードを指定することもできます。パーティション化テーブルおよび結合インデックスの詳細は、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。インデックス リストで前に出てくる項目がインデックス句の一部ではないパーティション句の場合、PARTITION BY句の後にCOMMA文字を指定する必要があります。それ以外の場合、カンマはオプションです。非圧縮結合インデックスにマルチレベル パーティションを定義でき、最大62のパーティション レベルを保持できます。各レベルは、RANGE_N関数またはCASE_N関数、あるいはCOLUMNキーワードで定義する必要があります。文字パーティション式は、Kanji1またはKanjiSJISサーバー文字セットを使用する列または定数には指定できません。RANGE_N関数またはCASE_N関数ではないパーティション式の結果は、まだINTERGER値ではない場合にはINTEGER型にキャストされます。値は1から65,535までの値にする必要があります。RANGE_N関数またはCASE_N関数は、単一レベル パーティションにのみ許可されます。2バイト パーティションの結合インデックスに指定できるパーティション レベルの最大数は15です。8バイト パーティションの結合インデックスに指定できるパーティション レベルの最大数は62です。結合インデックスに対するパーティション式は確定的な式である必要があり、外部UDFまたはSQL UDF、あるいは次のデータ型のいずれかを持つ列を指定することはできません。
  • ARRAY
  • VARRAY
  • BLOB
  • CLOB
  • Geospatial
結合インデックス用のパーティション式はGeospatial列またはARRAY/VARRAY列に定義できませんが、パーティション式をPeriod列に定義することはできます。これは、PPIで更新可能な現在の日付および更新可能な現在のタイムスタンプを定義する場合に特に役立ちます。
パーティション式にCASE_N関数またはRANGE_N関数のいずれを使用するかを決めるときには、次の点を考慮してください。
  • 条件間でのINTEGER数値へのマッピングを定義するには、CASE_N関数を使用します。

    パーティション式がCASE_N関数のみに基づいている場合、定義できるパーティションの最大数は約4,000個の条件までです。

    この最大数は、リクエスト テキストのサイズなどの他の制限によってさらに制限されることがあります。

  • RANGE_N関数を使用して、INTEGER、CHARACTER、またはDATE値の範囲のINTEGER数へのマッピングを定義します。BIGINT値とTIMESTAMP値をBIGINT数値にマッピングするには、RANGE_N関数を使用する必要があります。
単一レベルのパーティション式がINTEGERデータ型を取るRANGE_N関数のみに基づいている場合、定義できるパーティションの最大数は、2バイト パーティションで65,535個、8バイト パーティションで2,147,483,647個です。
パーティション式がBIGINTデータ型を取るRANGE_N関数のみに基づいている場合、定義可能なパーティションの最大数は9,223,372,036,854,775,805個です。
NO RANGEパーティションとUNKNOWNパーティションの両方を指定する場合は、9,223,372,036,854,775,807範囲まで定義できます。
パーティション レベルとしての使用に役立つ関数(特にRANGE_NとCASE_N)の資料については、<Teradata Vantage™ - SQL関数、式、および述部、B035-1145>を参照してください。
組み合わせパーティションの数だけ多種多様なパーティションを定義できます。ただし、特定のパーティションを定義することの有用性その影響を、パフォーマンスと記憶装置に関して、政府の両方の観点で考慮しなければなりません。
列パーティション結合インデックスには、COLUMNパーティション レベルを1つのみ指定する必要があります。
グループにまとめる列をリストに指定して、複数の列を単一のパーティションにグループ化することができます。
結合インデックス定義のパーティション レベルに列グループを指定した場合、その選択リストにも列グループを指定することはできません。
列パーティションに対してCOLUMNとROWのいずれも指定しない場合、システムによってその列パーティションにCOLUMNとROWのいずれを使用するかが決定されます(COLUMN形式とROW形式の詳細は、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください)。
COLUMN
パーティション レベルを示すキーワード。
AUTO COMPRESS
NO AUTO COMPRESS
自動圧縮を有効または無効にする手順:
  • PARTITION BY句で列パーティション レベルにAUTO COMPRESSを指定すると、明示的にNO AUTO COMPRESSを指定している場合を除いて、システムによって列パーティションに自動圧縮が適用されます。これはデフォルトです。
  • PARTITION BY句で列パーティション レベルにNO AUTO COMPRESSを指定すると、明示的にAUTO COMPRESSを指定している場合を除いて、システムによって列パーティションに自動圧縮は適用されません。
システムでは、COLUMN形式を使用する列パーティションに行ヘッダー自動圧縮を適用します。
ALL BUT (column_name_list)
ALL BUT (column_group_list)
自動圧縮およびシステム決定のCOLUMN形式またはROW形式が設定された複数列パーティション。このパーティションには、column_name_listまたはcolumn_group_listに指定されていない、結合インデックス定義内のすべての列が含まれます。
このオプションは、列パーティション結合インデックスにのみ指定できます。
COLUMN
結合インデックスに列パーティション レベルが含まれることを指定します。
列グループより前にCOLUMNキーワードを置くと、システムではグループ化された列をCOLUMN形式を使用して格納します。
ROW
列パーティションがROW形式を持つように指定します。ROW形式は、1つの列パーティション値のみが物理行に副行として格納されることを意味します。
列グループより前にROWキーワードを置くと、システムではグループ化された列をROW形式を使用して格納します。
ADD constant
パーティション レベルのパーティションの最大数は、定義するパーティションの数にconstantによって指定されるBIGINT定数値を加算した数になります。
constantの値は、符号なしのBIGINT定数にする必要があり、9,223,372,036,854,775,807を超えることはできません。
このオプションは、列パーティション結合インデックスにのみ指定できます。