すべてのプロダクト
Search
ドキュメントセンター

PolarDB:KEY-LIST

最終更新日:Mar 29, 2026

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)
    )
);