このトピックでは、範囲ハッシュパーティションテーブルの作成方法について説明します。
構文
次の文は、RANGE-HASH パーティションテーブルを作成します。第 1 レベルのパーティションは RANGE [COLUMNS] タイプで、第 2 レベルのパーティションは HASH/KEY タイプです。
CREATE TABLE [ schema. ]table_name
table_definition
PARTITION BY RANGE {(expr) | COLUMNS(column_list)}
SUBPARTITION BY {[LINEAR] HASH(expr) [SUBPARTITIONS number]
| [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list)}
(partition_definition [, partition_definition] ...);
/* 範囲ハッシュパーティションテーブルを作成する構文 */
partition_definition は次のとおりです。
PARTITION partition_name
VALUES LESS THAN {(expr | value_list) | MAXVALUE}
(subpartition_definition [, subpartition_definition] ...);
/* パーティション定義の構文 */
また、subpartition_definition は次のとおりです。
SUBPARTITION subpartition_name
/* サブパーティション定義の構文 */
パラメータ
パラメータ | 説明 |
expr | パーティションフィールド式。現在は INT 型のみをサポートし、文字列型はサポートしていません。 |
column_list | パーティションキー列のリスト。式はサポートされていません。 |
number | サブパーティションの数。 |
value | パーティションの境界値。 |
value_list | パーティションの境界値のリスト。RANGE COLUMNS() で使用されます。 |
MAXVALUE | 最大値。 |
partition_name | パーティションの名前。名前は同じテーブル内で一意である必要があります。 |
subpartition_name | サブパーティションの名前。名前は同じテーブル内で一意である必要があります。 |
例
第 1 レベルのパーティションは、
RANGE (expr)タイプを使用します。ここで、exprはパーティションの式です。INT 型のみがサポートされています。文字列型はサポートされていません。CREATE TABLE sales_range_hash_1 ( s_id varchar(20), dept_no INT, part_no INT, country varchar(20), date DATE, amount INT, primary key (s_id, amount) ) PARTITION BY RANGE (amount) SUBPARTITION BY KEY(s_id) SUBPARTITIONS 3 ( PARTITION p1 VALUES LESS THAN (1000), PARTITION p2 VALUES LESS THAN (2000), PARTITION p3 VALUES LESS THAN (3000), PARTITION p4 VALUES LESS THAN (4000) ); /* RANGE(expr) を使用した範囲ハッシュパーティションテーブルの作成例 */第 1 レベルのパーティションは、
RANGE COLUMNS(column_list)タイプを使用します。column_listは、パーティションキー列のリストです。式はサポートされていません。CREATE TABLE sales_range_hash_2 ( s_id varchar(20), dept_no INT, part_no INT, country varchar(20), date DATE, amount INT, primary key (s_id, date) ) PARTITION BY RANGE COLUMNS(date) SUBPARTITION BY KEY(s_id) SUBPARTITIONS 3 ( PARTITION p1 VALUES LESS THAN('2023-01-01'), PARTITION p2 VALUES LESS THAN('2023-02-01'), PARTITION p3 VALUES LESS THAN('2023-03-01'), PARTITION p4 VALUES LESS THAN('2023-04-01') ); /* RANGE COLUMNS(column_list) を使用した範囲ハッシュパーティションテーブルの作成例 */