All Products
Search
Document Center

PolarDB:LIST-HASH

Last Updated:Mar 29, 2026

Partisi LIST-HASH membagi sebuah tabel menjadi partisi LIST, kemudian membagi setiap partisi tersebut lebih lanjut menjadi subpartisi HASH atau KEY. Sebagai contoh, tabel dengan 3 partisi LIST dan 2 subpartisi HASH per partisi menghasilkan total 3 × 2 = 6 partisi fisik—menggabungkan routing berbasis nilai dengan distribusi data yang merata.

Sintaksis

CREATE TABLE [schema.]table_name
  table_definition
    PARTITION BY LIST {(expr) | COLUMNS (column_list)}
    SUBPARTITION BY {
      [LINEAR] HASH (expr) [SUBPARTITIONS number]
      | [LINEAR] KEY [ALGORITHM={1|2}] (column_list)
    }
    (partition_definition [, partition_definition] ...);

Di mana partition_definition adalah:

PARTITION partition_name
  VALUES IN (value_list)
  (subpartition_definition [, subpartition_definition] ...)

Dan subpartition_definition adalah:

SUBPARTITION subpartition_name

Parameter

ParameterDeskripsi
exprEkspresi partisi. Harus bertipe INT; tipe string tidak didukung.
numberJumlah subpartisi per partisi.
column_listKolom kunci partisi untuk partisi LIST COLUMNS atau subpartisi KEY. Ekspresi tidak didukung; hanya nama kolom yang diperbolehkan.
value_listNilai batas yang menentukan setiap partisi LIST.
partition_nameNama partisi. Harus unik dalam tabel.
subpartition_nameNama subpartisi. Harus unik dalam tabel.

Contoh

Buat tabel terpartisi list-hash

Contoh berikut mempartisi tabel sales_list_hash berdasarkan kolom amount (LIST), lalu membagi setiap partisi menjadi 2 bucket HASH berdasarkan kolom dept_no.

CREATE TABLE sales_list_hash
(
  dept_no   INT,
  part_no   INT,
  country   VARCHAR(20),
  date      DATE,
  amount    INT
)
PARTITION BY LIST(amount)
SUBPARTITION BY HASH(dept_no) SUBPARTITIONS 2
(
  PARTITION p0 VALUES IN (1, 2),
  PARTITION p1 VALUES IN (3, 4),
  PARTITION p2 VALUES IN (5, 6)
);

Ini menghasilkan total 3 × 2 = 6 partisi fisik.

Buat tabel terpartisi list columns-hash

Gunakan LIST COLUMNS untuk mempartisi berdasarkan kolom non-integer seperti country. Contoh berikut membuat 3 partisi LIST COLUMNS, masing-masing dibagi menjadi 2 subpartisi HASH.

CREATE TABLE sales_list_columns_hash
(
  dept_no   INT,
  part_no   INT,
  country   VARCHAR(20),
  date      DATE,
  amount    INT
)
PARTITION BY LIST COLUMNS(country)
SUBPARTITION BY HASH(dept_no) SUBPARTITIONS 2
(
  PARTITION europe  VALUES IN ('FRANCE', 'ITALY'),
  PARTITION asia    VALUES IN ('INDIA', 'PAKISTAN'),
  PARTITION americas VALUES IN ('US', 'CANADA')
);

Ini menghasilkan total 3 × 2 = 6 partisi fisik.