RANGE_N関数とCASE_N関数の一般的なガイドライン
RANGE_N関数とCASE_N関数を使用してパーティション式を作成する場合、以下のルールが適用されます。
- 2バイト パーティションのテーブルまたは結合インデックスで、組み合わせパーティションの最大数にまだ達していない場合、第1レベルのパーティションの最大数は、組み合わせパーティションの最大数が65,535を超えない範囲での最大値に増えます。
明示的なADD句が付いているレベルが少なくとも1つある場合や、BIGINTデータ型のRANGE_N関数だけで構成されているレベルが少なくとも1つある場合、あるいは列パーティションがある場合は、他のそれぞれのレベル(第2レベルから最終レベルまで)でこの処理が繰り返されます。
- パーティション式がRANGE_N関数だけで構成されていない場合に、INTEGERまたはBIGINTのいずれかのデータ型になっていなければ、そのパーティション式は、INTEGERデータ型にキャストするように書き換えられます。INTEGERまたはBIGINTのいずれかのデータ型にキャストできない場合、システムはリクエスト側にエラーを返します。
- 行パーティション レベルで定義するパーティションの数は、そのレベルの行パーティションを定義するために使用するRANGE_N関数またはCASE_N関数で指定する行パーティションの数になります。ただし、そのレベルがRANGE_N関数またはCASE_N関数に基づかない場合は、65,535になります。
RANGE_N関数
新しいパーティション式がRANGE_N関数のみで構成されている場合は、次の条件が適用されます。
- 定義する範囲の数は、2バイト パーティションの場合は65,535以下、8バイト パーティションの場合は9,223,372,036,854,775,807以下でなければなりません。そうでない場合、システムはリクエスト側にエラーを返します。
単一レベル パーティションで、NO RANGEとUNKNOWNの両方のパーティションを指定する場合、そのようなパーティション式で定義するパーティションの合計数は、2バイト パーティションの場合は65,535以下、8バイト パーティションの場合は9,223,372,036,854,775,807以下でなければなりません。
データ型がINTEGERのRANGE_N関数の場合、定義するパーティション数は65,535以下でなければなりません。この数を超えるパーティションを定義すると、システムはリクエスト元にエラーを返します。
データ型がBIGINTのRANGE_N関数の場合、定義するパーティション数は9,223,372,036,854,775,807以下でなければなりません。この数を超えるパーティションを定義すると、システムはリクエスト元にエラーを返します。
- 以下の条件がすべて満たされれば、範囲は前の範囲と組み合わされます。
- 前の範囲が、*で始まる範囲で指定されていない。
- 前の範囲が、EACH範囲のサイズ倍数になっている(EACHが指定されている場合)。つまり、最後に拡張した範囲が、EACH句で指定されたもの以上である。
- 前の範囲の最後が、この範囲の始まりの直前になっている。タイムスタンプ範囲の終了値として59.999999秒(テスト値の精度で切り捨て)~61.999999秒(テスト値の精度で切り捨て)の範囲のいずれかの値が指定された場合、次の1分が始まる直前のものと見なされます。
- (うるう秒は考えない)範囲のサイズ(またはEACHが指定された場合はEACHの範囲サイズ)が両方の範囲と同じである。
組み合わせ範囲に1つのEACH句があり、これが前の範囲のEACH句と同じか、前の範囲にEACH句がない場合には、組み合わせ範囲のEACH句の範囲サイズは前の範囲のサイズと同じになります。
- 単一レベル パーティションのパーティション式をINTEGERデータ型のRANGE_N関数だけで定義する場合、定義するパーティションの合計数は2,147,483,647以下でなければなりません。
パーティションの数が2,147,483,647を超える場合、システムはリクエスト側にエラーを返します。
2バイトの単一レベル パーティションの場合、RANGE_N関数で定義する範囲パーティションの数は65,533以下にする必要があります。そうでない場合は、パーティションは8バイト パーティションになります。
2バイトのシングルレベル パーティションの場合に、NO RANGEとUNKNOWNの両方のパーティションも指定すると、定義できるパーティションの最大合計数は65,535になります。
- パーティション式をBIGINTデータ型のRANGE_N関数だけで定義する場合、定義する範囲の数は9,223,372,036,854,775,805以下でなければなりません。
範囲の数が9,223,372,036,854,775,805を超える場合、システムはリクエスト側にエラーを返します。
シングルレベル パーティションの場合に、NO RANGEとUNKNOWNの両方のパーティションも指定すると、そのようなパーティション式で定義できるパーティションの最大合計数は9,223,372,036,854,775,807になります。
CASE_N関数
パーティション式がCASE_N関数のみで構成されている場合は、次の条件が適用されます。
- 定義するパーティションの数は2,147,483,647以下でなければなりません。CASE_N関数にはINTEGERデータ型が含まれ、2,147,483,647はINTEGERの指定可能な最大値であるため、この数を超えるパーティションを定義すると、システムはリクエスト元にエラーを返します。
- 定義するパーティションの数は2,147,483,647以下でなければなりません。CASE_N関数から返される値はINTEGERデータ型だからです。
パーティションの数が2,147,483,647を超える場合、システムはリクエスト側にエラーを返します。