Partisi LIST-LIST menerapkan partisi list pada dua dimensi independen—melakukan partisi berdasarkan satu kolom diskrit, lalu melakukan subpartisi berdasarkan kolom lainnya. Pendekatan ini berguna ketika data secara alami terpetakan ke dua himpunan nilai diskrit, seperti departemen dan channel penjualan, di mana Anda ingin mengontrol secara langsung nilai mana yang masuk ke setiap partisi dan subpartisi.
Sintaksis
CREATE TABLE [schema.]table_name
table_definition
PARTITION BY LIST {(expr) | COLUMNS(column_list)}
SUBPARTITION BY LIST(expr)
(partition_definition [, partition_definition] ...);partition_definition:
PARTITION partition_name
VALUES IN (value_list)
(subpartition_definition [, subpartition_definition] ...)subpartition_definition:
SUBPARTITION subpartition_name
VALUES IN (value_list)Parameter
| Parameter | Deskripsi |
|---|---|
table_name | Nama tabel yang akan dibuat. |
expr | Ekspresi partisi. Harus bertipe INT. Tipe string tidak didukung. |
column_list | Daftar kolom yang digunakan dalam LIST COLUMNS(). Ekspresi tidak didukung. |
value_list | Daftar nilai batas untuk partisi. |
partition_name | Nama partisi. Harus unik dalam tabel. |
subpartition_name | Nama subpartisi. Harus unik dalam tabel. |
Contoh
Tabel partisi LIST-LIST
Contoh berikut melakukan partisi pada tabel penjualan berdasarkan departemen (dept_no) pada tingkat partisi dan berdasarkan nomor bagian (part_no) pada tingkat subpartisi. Baris dengan dept_no = 1 dan part_no = 3 pertama-tama diarahkan ke partisi p0 (yang menyimpan nilai dept_no 1 dan 2), lalu diarahkan lebih lanjut ke subpartisi partno1 (yang menyimpan nilai part_no 3 dan 4).
CREATE TABLE sales_list_list
(
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT
)
PARTITION BY LIST (dept_no)
SUBPARTITION BY LIST (part_no)
(
PARTITION p0 VALUES IN (1, 2)(
SUBPARTITION partno0 VALUES IN (1, 2),
SUBPARTITION partno1 VALUES IN (3, 4),
SUBPARTITION partno2 VALUES IN (5, 6)
),
PARTITION p1 VALUES IN (3, 4)(
SUBPARTITION partno3 VALUES IN (1, 2),
SUBPARTITION partno4 VALUES IN (3, 4),
SUBPARTITION partno5 VALUES IN (5, 6)
),
PARTITION p2 VALUES IN (5, 6)(
SUBPARTITION partno6 VALUES IN (1, 2),
SUBPARTITION partno7 VALUES IN (3, 4),
SUBPARTITION partno8 VALUES IN (5, 6)
)
);Tabel partisi LIST COLUMNS-LIST
Contoh berikut menggunakan LIST COLUMNS untuk melakukan partisi berdasarkan kolom string (country) pada tingkat partisi dan berdasarkan kolom integer (dept_no) pada tingkat subpartisi. LIST COLUMNS menerima nilai kolom secara langsung tanpa memerlukan ekspresi INT.
CREATE TABLE sales_list_columns_list
(
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT
)
PARTITION BY LIST COLUMNS(country)
SUBPARTITION BY LIST (dept_no)
(
PARTITION europe VALUES IN ('FRANCE', 'ITALY')(
SUBPARTITION p0 VALUES IN (1, 2),
SUBPARTITION p1 VALUES IN (3, 4),
SUBPARTITION p2 VALUES IN (5, 6)
),
PARTITION asia VALUES IN ('INDIA', 'PAKISTAN')(
SUBPARTITION p3 VALUES IN (1, 2),
SUBPARTITION p4 VALUES IN (3, 4),
SUBPARTITION p5 VALUES IN (5, 6)
),
PARTITION americas VALUES IN ('US', 'CANADA')(
SUBPARTITION p6 VALUES IN (1, 2),
SUBPARTITION p7 VALUES IN (3, 4),
SUBPARTITION p8 VALUES IN (5, 6)
)
);