KEY-LIST パーティショニングは、コンポジット・パーティション(サブパーティションとも呼ばれる)の一種で、上位レベルで KEY パーティショニングを、下位レベルで LIST サブパーティションを組み合わせたものです。各行はまずキー式をハッシュ化することでパーティションに割り当てられ、その後、離散的な値リストに基づいてサブパーティションに配置されます。書き込み負荷を均等に分散させるためにパーティション間でハッシュベースのディストリビューションを実現しつつ、カテゴリ型カラムに対して効率的な範囲検索に近いクエリをサポートするために各パーティション内で値ベースのフィルターを適用したい場合に、KEY-LIST を使用してください。
パーティション式(expr)は INT 型である必要があります。文字列型はサポートされていません。構文
CREATE TABLE [schema.]table_name
table_definition
PARTITION BY [LINEAR] KEY(expr)
SUBPARTITION BY LIST (expr)
(partition_definition [, partition_definition] ...);ここで partition_definition は次のとおりです。
PARTITION partition_name
(subpartition_definition [, subpartition_definition] ...)また、subpartition_definition は次のとおりです。
SUBPARTITION subpartition_name
VALUES IN (value_list)パラメーター
| パラメーター | 説明 |
|---|---|
table_name | テーブル名。 |
expr | パーティション式。INT 型である必要があり、文字列型はサポートされていません。 |
value_list | サブパーティションに割り当てる値のリスト。 |
partition_name | パーティション名。テーブル内で一意である必要があります。 |
subpartition_name | サブパーティション名。テーブル内で一意である必要があります。 |
例
以下の例では、part_no の値に基づいて 3 つのサブパーティションを含む 3 つのパーティションを持つ sales テーブルを作成します。
CREATE TABLE sales_key_list (
dept_no VARCHAR(20),
part_no INT,
country VARCHAR(20),
date DATE,
amount INT
)
PARTITION BY KEY(part_no)
SUBPARTITION BY LIST(part_no)
(
PARTITION dp0 (
SUBPARTITION p0 VALUES IN (1, 2),
SUBPARTITION p1 VALUES IN (3, 4),
SUBPARTITION p2 VALUES IN (5, 6)
),
PARTITION dp1 (
SUBPARTITION p3 VALUES IN (1, 2),
SUBPARTITION p4 VALUES IN (3, 4),
SUBPARTITION p5 VALUES IN (5, 6)
),
PARTITION dp2 (
SUBPARTITION p6 VALUES IN (1, 2),
SUBPARTITION p7 VALUES IN (3, 4),
SUBPARTITION p8 VALUES IN (5, 6)
)
);