Partisi RANGE-LIST menggunakan RANGE (atau RANGE COLUMNS) sebagai strategi partisi primer dan LIST sebagai strategi subpartisi. Setiap partisi range berisi satu atau lebih subpartisi list, memungkinkan Anda mengelompokkan baris berdasarkan rentang numerik atau tanggal di tingkat atas, lalu berdasarkan kumpulan nilai diskrit di dalam setiap rentang tersebut.
Sintaks
CREATE TABLE ... PARTITION BY RANGE {(expr) | COLUMNS(column_list)}
SUBPARTITION BY LIST(expr)
[(partition_definition [, partition_definition] ...)];partition_definition:
PARTITION partition_name
VALUES LESS THAN {(value | value_list) | MAXVALUE}
[(subpartition_definition [, subpartition_definition] ...)]subpartition_definition:
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 yang digunakan dalam RANGE COLUMNS(). Ekspresi tidak didukung. |
value | Nilai batas partisi. |
value_list | Daftar nilai kolom kunci partisi yang digunakan dalam RANGE COLUMNS(). |
value_list2 | Daftar nilai batas untuk subpartisi. |
MAXVALUE | Nilai maksimum partisi. |
partition_name | Nama partisi. Harus unik dalam tabel. |
subpartition_name | Nama subpartisi. Harus unik dalam tabel. |
Contoh
Buat tabel partisi RANGE-LIST
Tabel berikut mempartisi data penjualan berdasarkan amount (RANGE), lalu berdasarkan dept_no (LIST):
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 partisi RANGE COLUMNS-LIST
Tabel berikut menggunakan RANGE COLUMNS pada kolom DATE, yang memungkinkan kunci partisi non-integer:
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)
)
);