Partisi LIST menetapkan baris ke partisi berdasarkan kecocokan nilai kolom dengan kumpulan nilai diskret yang telah ditentukan. Gunakan metode ini ketika data termasuk dalam kategori yang jelas—seperti wilayah penjualan, jenis produk, atau kode status—dan Anda ingin mengisolasi setiap kategori ke dalam partisinya sendiri guna menjalankan kueri secara efisien serta melakukan operasi tingkat partisi seperti penghapusan massal.
PolarDB for MySQL mendukung dua varian:
LIST — mempartisi berdasarkan ekspresi INT tunggal.
LIST COLUMNS — mempartisi berdasarkan satu atau beberapa kolom bertipe INT, string, DATE, atau DATETIME.
Sintaks
CREATE TABLE ... PARTITION BY LIST {(expr) | COLUMNS(column_list)}
(
partition_definition [, partition_definition] ...
);Setiap partition_definition mengikuti bentuk berikut:
PARTITION partition_name
VALUES IN (value_list)Parameter
| Parameter | Deskripsi |
|---|---|
expr | Ekspresi partisi. Harus mengembalikan nilai INT. Ekspresi string tidak didukung. |
column_list | Daftar kolom kunci partisi yang digunakan dengan LIST COLUMNS. Ekspresi tidak didukung; hanya referensi kolom yang diperbolehkan. |
value_list | Nilai-nilai yang dipetakan ke partisi ini. Nilai harus unik di seluruh partisi dalam tabel. |
partition_name | Nama partisi. Harus unik dalam tabel. |
Batasan
LIST:
Ekspresi harus mengembalikan nilai INT. Ekspresi string tidak didukung.
Hanya mendukung kunci partisi kolom tunggal.
LIST COLUMNS:
Tidak mendukung ekspresi; hanya menerima referensi kolom.
Mendukung kunci partisi multi-kolom.
Tipe kolom yang didukung: INT, tipe string, DATE, dan DATETIME.
Contoh
Partisi berdasarkan kolom INT (LIST)
Contoh berikut mempartisi tabel penjualan berdasarkan kolom amount. Baris dengan nilai amount 1 atau 2 masuk ke partisi p0, nilai 3 atau 4 ke p1, dan nilai 5 atau 6 ke p2.
CREATE TABLE sales_list
(
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT
)
PARTITION BY LIST (amount)
(
PARTITION p0 VALUES IN (1, 2),
PARTITION p1 VALUES IN (3, 4),
PARTITION p2 VALUES IN (5, 6)
);Partisi berdasarkan kolom string (LIST COLUMNS)
LIST COLUMNS mendukung kolom string, sehingga Anda dapat langsung mempartisi berdasarkan nilai teks tanpa perlu pemetaan numerik. Contoh berikut mengelompokkan negara ke dalam tiga partisi regional.
CREATE TABLE sales_list_columns
(
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT
)
PARTITION BY LIST COLUMNS(country)
(
PARTITION europe VALUES IN ('FRANCE', 'ITALY'),
PARTITION asia VALUES IN ('INDIA', 'PAKISTAN'),
PARTITION americas VALUES IN ('US', 'CANADA')
);