17.00 - 17.05 - 列パーティション テーブル内の列パーティションのルール - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)
  • 1つの列パーティション内で1つの列を複数回指定したり、1つの列を複数の列パーティションに指定したりすることはできません。
  • 1つの列パーティション レベルに対して定義される列パーティションの数は、ユーザーが指定した列パーティションの数に、内部使用のために予約済みの2つの列パーティションを加算した数になります。

    Teradata Databaseは、予約済みの1つのパーティションを、削除された行を示すためのスパース ビット マップとして使用します。もう1つのパーティションは、将来の使用のために予約されています。列パーティションに割り当てられていない列パーティションが、常時、少なくとも1つ存在します。

  • 行パーティション レベルに対して定義されるパーティション数は、PARTITION BY句でユーザーが定義する行パーティションの数になります。

    PARTITION BY句のRANGE_N関数またはCASE_N関数をユーザーが指定しない場合、Teradata Databaseはデフォルトで最大65,535個の行パーティションをテーブルに対して使用します。

  • Teradata Databaseは最初に、1から始まり、最大csまで1ずつ増分する番号をユーザー指定の列パーティションに割り当てます。
    このルールには、次の定義が適用されます。
    変数 定義
    cs ユーザーが指定した列パーティションの数
    cm 列パーティション レベルの最大パーティション数

    Teradata Databaseは、内部パーティションにパーティション番号cm-1を割り当て、削除列内部パーティションにパーティション番号cmを割り当てます。

    最初は、列パーティション番号cs+1からcm-2までに割り当てられる列パーティションはありません。cm-cs-2は0より大きいので、最初は少なくとも1つの列パーティション番号が未使用です。

    パーティションを削除または変更すると、番号に空きができていきます。列パーティションを追加または変更すると、1からcm-2までの間の未使用の列パーティション番号が、新しく追加された列パーティション、または変更された列パーティション割り当てられます。少なくとも1つの列パーティション番号が未使用として残っているからです。これが必要なのは、列パーティションを変更するには、ALTER TABLEが使用するために少なくとも1つの列パーティション番号が利用可能でなければならないからです。

    Teradata Databaseは、列パーティション番号を、テーブルの行の列パーティション値に対して組み合わせパーティション番号を算出するために使用します。その点を除けば、列パーティションに割り当てられる列パーティション番号に特に意味はありません。