All Products
Search
Document Center

PolarDB:Partisi LIST COLUMNS

Last Updated:Mar 29, 2026

Partisi LIST COLUMNS merupakan varian dari partisi LIST yang mendukung beberapa kolom kunci partisi dan tidak memerlukan fungsi partisi untuk mengonversi nilai kolom menjadi bilangan bulat. Anda dapat langsung menggunakan kolom bertipe string, date, dan datetime sebagai kunci partisi. Untuk perbandingan antara kedua metode tersebut, lihat tabel Perbandingan antara partisi LIST dan partisi LIST COLUMNS dalam ikhtisar.

Sintaks

Setiap partisi mencantumkan nilai eksak dari kolom yang termasuk di dalamnya. Nilai tersebut harus unik di seluruh partisi. Gunakan partisi DEFAULT opsional sebagai penangkap semua baris yang tidak sesuai dengan partisi lainnya.

CREATE TABLE ...
PARTITION BY LIST COLUMNS(partition_column_list) [PARTITIONS number]
(
  PARTITION part_name VALUES IN (list_bound_value_set),
  PARTITION part_name VALUES IN (list_bound_value_set),
  ...
  [ PARTITION part_name VALUES IN (DEFAULT) ]
)

partition_column_list:
  partition_column[, partition_column, partition_column, ...]

list_bound_value_set:
  list_bound_value[, list_bound_value, list_bound_value, ...]

Batasan

  • Partisi LIST COLUMNS tidak mendukung fungsi partisi.

  • Tabel terpartisi dapat berisi hingga 8.192 partisi secara default.

  • Kunci partisi dapat terdiri dari hingga lima kolom secara default.

  • Nama setiap partisi harus unik dan panjangnya dapat mencapai 16 karakter secara default.

  • Untuk menggunakan kolom TIMESTAMP sebagai kolom kunci partisi, terapkan fungsi UNIX_TIMESTAMP pada kolom tersebut.

Tipe data yang didukung

Partisi LIST COLUMNS mendukung tipe data berikut untuk kolom kunci partisi:

  • Tipe integer: BIGINT, BIGINT UNSIGNED, INT, INT UNSIGNED, MEDIUMINT, MEDIUMINT UNSIGNED, SMALLINT, SMALLINT UNSIGNED, TINYINT, TINYINT UNSIGNED

  • Tipe tanggal dan waktu: DATETIME, DATE, TIMESTAMP

  • Tipe string: CHAR, VARCHAR

  • Tipe fixed-point: DECIMAL (digit pecahan harus 0)

Contoh

Partisi berdasarkan kolom string

Kasus penggunaan umum adalah mengarahkan baris ke partisi berdasarkan kolom string, seperti Wilayah atau kategori. Contoh berikut membuat tabel customer yang dipartisi berdasarkan nama kota, dengan mengelompokkan kota-kota ke dalam wilayah penjualan:

CREATE TABLE customers (
  id BIGINT NOT NULL AUTO_INCREMENT,
  name VARCHAR(50),
  city VARCHAR(30),
  PRIMARY KEY (id)
)
PARTITION BY LIST COLUMNS(city)
(
  PARTITION p_north  VALUES IN ('Beijing', 'Tianjin', 'Shenyang'),
  PARTITION p_east   VALUES IN ('Shanghai', 'Nanjing', 'Hangzhou'),
  PARTITION p_south  VALUES IN ('Guangzhou', 'Shenzhen', 'Xiamen'),
  PARTITION p_other  VALUES IN (DEFAULT)
);

p_other menangkap semua baris di mana city tidak sesuai dengan nilai yang tercantum.

Partisi berdasarkan kunci partisi komposit

Gunakan kunci partisi komposit (beberapa kolom) ketika baris perlu diarahkan berdasarkan kombinasi nilai. Contoh berikut mempartisi pesanan berdasarkan birthday dan id:

CREATE TABLE tb_lc (
  id BIGINT NOT NULL AUTO_INCREMENT,
  bid INT,
  name VARCHAR(30),
  birthday DATETIME NOT NULL,
  PRIMARY KEY (id)
)
PARTITION BY LIST COLUMNS(birthday, id)
(
  PARTITION p1 VALUES IN (('2020-01-01', 1000), ('2020-01-01', 2000)),
  PARTITION p2 VALUES IN (('2021-01-01', 1000), ('2021-01-01', 2000)),
  PARTITION p3 VALUES IN (('2022-01-01', 1000), ('2022-01-01', 2000)),
  PARTITION pm VALUES IN (DEFAULT)
);

pm adalah partisi DEFAULT yang menangkap baris yang tidak sesuai dengan p1, p2, atau p3.

Catatan

Ketika daftar nilai diskrit menjadi sangat panjang (misalnya, ratusan tanggal), partisi RANGE COLUMNS biasanya lebih praktis untuk didefinisikan dan dipelihara.