全部产品
Search
文档中心

PolarDB:RANGE-LIST

更新时间:Jul 02, 2025

Topik ini menjelaskan cara membuat tabel yang dipartisi berdasarkan rentang-daftar.

Sintaksis

Pernyataan berikut digunakan untuk membuat satu atau lebih tabel yang dipartisi berdasarkan rentang-daftar, di mana setiap partisi dapat berisi satu atau lebih subpartisi:

CREATE TABLE ... PARTITION BY RANGE {(expr) | COLUMNS(column_list)}
   SUBPARTITION BY LIST(expr)
[(partition_definition [, partition_definition] ...)];

partition_definition adalah:

PARTITION partition_name
       VALUES LESS THAN {(value | value_list) | MAXVALUE}
[(subpartition_definition [, subpartition_definition] ...)]

subpartition_definition adalah:

SUBPARTITION subpartition_name
       VALUES IN (value_list2)

Parameter

Parameter

Deskripsi

expr

Ekspresi partisi. Harus bertipe INT. Tipe string tidak didukung.

column_list

Daftar kolom kunci partisi. Digunakan dalam RANGE COLUMNS(). Ekspresi tidak didukung.

value

Nilai batas partisi.

value_list

Daftar nilai kolom kunci partisi. Digunakan dalam RANGE COLUMNS().

value_list2

Daftar nilai batas.

MAXVALUE

Nilai maksimum partisi.

partition_name

Nama partisi. Nama harus unik dalam tabel.

subpartition_name

Nama subpartisi. Nama harus unik dalam tabel.

Contoh

Buat tabel yang dipartisi berdasarkan rentang-daftar:

CREATE TABLE sales_range_list
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)
PARTITION BY RANGE(amount)
	SUBPARTITION BY LIST(dept_no)
(
  PARTITION m1 VALUES LESS THAN(1000) (
        SUBPARTITION p0 VALUES in (1, 2),
  			SUBPARTITION p1 VALUES in (3, 4),
  			SUBPARTITION p2 VALUES in (5, 6)
  ),
  PARTITION m2 VALUES LESS THAN(2000) (
        SUBPARTITION p3 VALUES in (1, 2),
  			SUBPARTITION p4 VALUES in (3, 4),
  			SUBPARTITION p5 VALUES in (5, 6)
  ),
  PARTITION m3 VALUES LESS THAN(MAXVALUE) (
        SUBPARTITION p6 VALUES in (1, 2),
  			SUBPARTITION p7 VALUES in (3, 4),
  			SUBPARTITION p8 VALUES in (5, 6)
  )
);

Buat tabel yang dipartisi berdasarkan rentang kolom-daftar:

CREATE TABLE sales_range_columns_list
(
  dept_no     INT,
  part_no     INT,
  country     varchar(20),
  date        DATE,
  amount      INT
)
PARTITION BY RANGE COLUMNS(date)
	SUBPARTITION BY LIST(dept_no)
(
  PARTITION dp1 VALUES LESS THAN('2023-01-01')(
    		SUBPARTITION p0 VALUES in (1, 2),
  			SUBPARTITION p1 VALUES in (3, 4),
  			SUBPARTITION p2 VALUES in (5, 6)
  ),
  PARTITION dp2 VALUES LESS THAN('2024-01-01')(
    		SUBPARTITION p3 VALUES in (1, 2),
  			SUBPARTITION p4 VALUES in (3, 4),
  			SUBPARTITION p5 VALUES in (5, 6)
  ),
  PARTITION dp3 VALUES LESS THAN('2025-01-01')(
    		SUBPARTITION p6 VALUES in (1, 2),
  			SUBPARTITION p7 VALUES in (3, 4),
  			SUBPARTITION p8 VALUES in (5, 6)
  )
);