この例は例: CASE_N関数を使用したCHARACTERパーティションに似ていますが、CASE_N関数およびLIKEの代わりにRANGE_N関数に基づくパーティション式を指定します。
この定義は、LIKE演算子を指定するCASE_N式では静的行パーティション排除がサポートされないため、例: CASE_N関数を使用したCHARACTERパーティションの定義よりも推奨されます。
この例では、last_nameの位置2の文字がSPACEであるため、'B'はパーティション2に入ります。last_nameの位置2の文字がSPACE文字より小さい文字(TABなど)として照合された場合、行はパーティション1に割り当てられます。
例: CASE_N関数を使用したCHARACTERパーティションでは、最初の文字が一致することが、対応するパーティションに行が割り当てられるために必要なすべてです。この場合、最初の2つのパーティションの条件がいずれもfalseになるため、この行はパーティション3に入ります: last_name < 'A' , last_name < 'B'
CREATE TABLE accounts2 ( cust_id INTEGER, last_name VARCHAR(30) NOT CASESPECIFIC, first_name VARCHAR(30), city VARCHAR(50)) PRIMARY INDEX (cust_id) PARTITION BY RANGE_N(last_name BETWEEN 'A','B','C','D','E','F','G', 'H','I','J','K','L','M','N', 'O','P','Q','R','S','T','U', 'V','W','X','Y','Z' AND 'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ', NO RANGE,UNKNOWN);
例: CASE_N関数を使用したCHARACTERパーティションの最初の部分のパーティション化は、CAST式を使用する、次のRANGE_Nパーティション式を使って重複させることができます。ただし、この形式のRANGE_Nパーティションは、RANGE_Nテスト値上にCASTがある場合、静的行パーティション排除が使用できないため、望ましくありません。
PARTITION BY RANGE_N(CAST(last_name AS CHARACTER(1)) BETWEEN 'A','B','C','D','E','F','G', 'H','I','J','K','L','M','N', 'O','P','Q','R','S','T','U', 'V','W','X','Y','Z' AND 'Z', NO RANGE, UNKNOWN);
各範囲の末尾に29個のNULLを付けて範囲を指定する以外は全く同じテーブルを作成することにより、このテーブルに対する静的パーティション排除を有効にすることができます。列がVARCHAR(30)として入力されているため、各範囲には先頭の1文字と、それに続いてその列に割り振られた残りの文字数である29文字分を埋めるだけのNULLが指定されます。当該列がVARCHAR(50)と指定された場合は、その範囲に対して各文字指定の末尾に49個のNULLを付ける、というようになります。RANGE_Nの例では16進文字リテラルを使用します。セッション文字セットがLatinの場合、各文字を表わすには2桁(58個のゼロ)が必要です。セッション文字セットがUnicodeの場合、各文字を表わすには4桁(116個のゼロ)が必要です。
このようにパーティション式を指定すれば、テーブルに実行されるリクエストに対して最適化ルーチンが静的パーティション排除を使用し、不要なパーティションを排除することによってテーブルのスキャンの速度が飛躍的に高まります。
CREATE TABLE accounts2 ( cust_id INTEGER, last_name VARCHAR(30) NOT CASESPECIFIC, first_name VARCHAR(30), city VARCHAR(50)) PRIMARY INDEX (cust_id) PARTITION BY RANGE_N(last_name BETWEEN ('A'||'0000000000000000000000000000000000000000000000000000000000'XC), ('B'||'0000000000000000000000000000000000000000000000000000000000'XC), ('C'||'0000000000000000000000000000000000000000000000000000000000'XC), ('D'||'0000000000000000000000000000000000000000000000000000000000'XC), ('E'||'0000000000000000000000000000000000000000000000000000000000'XC), ('F'||'0000000000000000000000000000000000000000000000000000000000'XC), ('G'||'0000000000000000000000000000000000000000000000000000000000'XC), ('H'||'0000000000000000000000000000000000000000000000000000000000'XC), ('I'||'0000000000000000000000000000000000000000000000000000000000'XC), ('J'||'0000000000000000000000000000000000000000000000000000000000'XC), ('K'||'0000000000000000000000000000000000000000000000000000000000'XC), ('L'||'0000000000000000000000000000000000000000000000000000000000'XC), ('M'||'0000000000000000000000000000000000000000000000000000000000'XC), ('N'||'0000000000000000000000000000000000000000000000000000000000'XC), ('O'||'0000000000000000000000000000000000000000000000000000000000'XC), ('P'||'0000000000000000000000000000000000000000000000000000000000'XC), ('Q'||'0000000000000000000000000000000000000000000000000000000000'XC), ('R'||'0000000000000000000000000000000000000000000000000000000000'XC), ('S'||'0000000000000000000000000000000000000000000000000000000000'XC), ('T'||'0000000000000000000000000000000000000000000000000000000000'XC), ('U'||'0000000000000000000000000000000000000000000000000000000000'XC), ('V'||'0000000000000000000000000000000000000000000000000000000000'XC), ('W'||'0000000000000000000000000000000000000000000000000000000000'XC), ('X'||'0000000000000000000000000000000000000000000000000000000000'XC), ('Y'||'0000000000000000000000000000000000000000000000000000000000'XC), ('Z'||'0000000000000000000000000000000000000000000000000000000000'XC), AND ('{'||'0000000000000000000000000000000000000000000000000000000000'XC), UNKNOWN);