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

PolarDB:HASH-RANGE

最終更新日:Mar 29, 2026

ハッシュ・レンジ・パーティション方式では、テーブルのデータをハッシュパーティションに分割し、さらに各ハッシュパーティションを範囲ベースのサブパーティションに分割します。この戦略は、ハッシュ化によって行をパーティション間で均等に分散させる必要がある一方で、第2の列に対する範囲条件によるパーティション削減(pruning)も実現したい場合に使用します。

構文

CREATE TABLE [schema.]table_name
  table_definition
  PARTITION BY [LINEAR] HASH(expr)
  SUBPARTITION BY RANGE (expr)
  (partition_definition [, partition_definition] ...)

partition_definition

PARTITION partition_name
  (subpartition_definition [, subpartition_definition] ...)

subpartition_definition

SUBPARTITION subpartition_name
  VALUES LESS THAN {value | MAXVALUE}

パラメーター

パラメーター説明
table_nameテーブルの名前です。
exprパーティション式です。INT 型である必要があります。文字列型はサポートされていません。
valueパーティションの境界値です。
MAXVALUEパーティションの最大値です。
partition_nameパーティションの名前です。テーブル内で一意である必要があります。
subpartition_nameサブパーティションの名前です。テーブル内で一意である必要があります。

注意事項

  • partition_name の値は、テーブル内で一意である必要があります。

  • subpartition_name の値は、テーブル内で一意である必要があります。

以下のステートメントは、sales_hash_range というテーブルを作成します。このテーブルには 3 つのハッシュパーティション(p0p1p2)が定義され、それぞれが part_no の値に基づく 4 つの範囲サブパーティションで構成されます。

CREATE TABLE sales_hash_range
(
  dept_no  INT,
  part_no  INT,
  country  VARCHAR(20),
  date     DATE,
  amount   INT
)
PARTITION BY HASH(dept_no)
SUBPARTITION BY RANGE(part_no)
(
  PARTITION p0 (
    SUBPARTITION s0 VALUES LESS THAN (4),
    SUBPARTITION s1 VALUES LESS THAN (7),
    SUBPARTITION s2 VALUES LESS THAN (10),
    SUBPARTITION s3 VALUES LESS THAN (13)
  ),
  PARTITION p1 (
    SUBPARTITION s4 VALUES LESS THAN (4),
    SUBPARTITION s5 VALUES LESS THAN (7),
    SUBPARTITION s6 VALUES LESS THAN (10),
    SUBPARTITION s7 VALUES LESS THAN (13)
  ),
  PARTITION p2 (
    SUBPARTITION s8 VALUES LESS THAN (4),
    SUBPARTITION s9 VALUES LESS THAN (7),
    SUBPARTITION s10 VALUES LESS THAN (10),
    SUBPARTITION s11 VALUES LESS THAN (13)
  )
);

dept_no により、各行がどのハッシュパーティション(p0p2)に属するかが決定されます。各パーティション内では、part_no の値に基づいてサブパーティションが選択されます。たとえば、4 未満の値は最初のサブパーティション、7 未満の値は2番目のサブパーティションへと割り当てられます。