全部产品
Search
文档中心

PolarDB:PARTISI LIST

更新时间:Jul 06, 2025

Sintaksis

Dalam partisi LIST, Anda harus mencantumkan nilai kunci partisi untuk setiap partisi. Setiap nilai kunci partisi yang terdaftar harus unik. Anda dapat menggunakan DEFAULT untuk mendefinisikan partisi tangkap-semua bagi baris yang tidak termasuk dalam partisi lainnya.

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

partition_expr:
    partition_column	
  | partition_func(partition_column)

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

# Definisikan fungsi partisi.
partition_func:
     
  | TO_DAYS
  | TO_MONTHS
  | TO_WEEKS
  | TO_SECOND
  | UNIX_TIMESTAMP
  | MONTH
  | DAYOFWEEK
  | DAYOFMONTH
  | DAYOFYEAR
  | SUBSTR
  | SUBSTRING
  | RIGHT
  | LEFT
Catatan

Untuk informasi lebih lanjut tentang perbedaan antara partisi LIST dan partisi LIST COLUMNS, lihat tabel Perbandingan antara partisi LIST dan partisi LIST COLUMNS pada topik "Ikhtisar".

Catatan penggunaan

  • Partisi LIST memungkinkan penggunaan fungsi partisi untuk kunci partisi kolom tunggal. Namun, tipe data yang didukung untuk kolom kunci partisi bervariasi berdasarkan fungsi partisi.

  • Partisi LIST tidak mengizinkan penggunaan fungsi partisi untuk kunci partisi vektor.

  • Anda tidak dapat menggunakan fungsi partisi bersarang untuk kolom kunci partisi.

  • Secara default, tabel yang dipartisi dapat berisi hingga 8.192 partisi.

  • Secara default, kunci partisi dapat terdiri dari hingga lima kolom kunci partisi.

  • Nama setiap partisi harus unik dan secara default dapat memiliki panjang hingga 16 karakter.

  • Jika Anda menggunakan kolom dengan tipe data sensitif zona waktu seperti TIMESTAMP sebagai kolom kunci partisi, Anda harus menggunakan fungsi partisi UNIX_TIMESTAMP untuk kolom kunci partisi tersebut.

Contoh

Menggunakan fungsi partisi

Tentukan kolom birthday bertipe DATETIME sebagai kunci partisi kolom tunggal, gunakan fungsi partisi TO_DAYS untuk mengonversi nilai kolom birthday menjadi jumlah hari, lalu lakukan partisi LIST.

CREATE TABLE tb_l_fn(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY LIST(TO_DAYS(birthday))
(
   PARTITION p1 VALUES IN (TO_DAYS('2020-01-01'),TO_DAYS('2020-02-01')),
   PARTITION p2 VALUES IN (TO_DAYS('2021-01-01'),TO_DAYS('2021-02-01')),
   PARTITION p3 VALUES IN (TO_DAYS('2022-01-01')),
   PARTITION pm VALUES IN (DEFAULT)
)

Untuk informasi lebih lanjut tentang cara menggunakan fungsi partisi lainnya, lihat Fungsi Partisi.

Melakukan partisi tanpa menggunakan fungsi partisi

Tentukan kolom id sebagai kunci partisi kolom tunggal untuk partisi LIST dan atur jumlah partisi menjadi 8.

CREATE TABLE tb_l(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY LIST(id)
(
   PARTITION p1 VALUES IN (1000,1001,1002),
   PARTITION p2 VALUES IN (2000,2001,2002),
   PARTITION p3 VALUES IN (3000),
   PARTITION pm VALUES IN (DEFAULT)
)

Menggunakan kunci partisi vektor

Jika kunci partisi vektor digunakan untuk partisi LIST, partisi LIST secara otomatis dikonversi menjadi partisi LIST COLUMNS. Contoh kode berikut menunjukkan contoh partisi LIST berdasarkan kolom birthday dan id:

CREATE TABLE tb_l(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY LIST(birthday,id)
(
   PARTITION p1 VALUES IN(('1990-04-03',1000),('1991-04-03',2000)),
   PARTITION p2 VALUES IN(('2000-01-03',3000),('2001-04-03',3001)),
   PARTITION pm VALUES IN(DEFAULT)
)

Partisi LIST sebelumnya secara otomatis dikonversi menjadi partisi LIST COLUMNS. Contoh kode berikut menunjukkan contoh partisi LIST COLUMNS:

CREATE TABLE tb_l(
 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(('1990-04-03',1000),('1991-04-03',2000)),
   PARTITION p2 VALUES IN(('2000-01-03',3000),('2001-04-03',3001)),
   PARTITION pm VALUES IN(DEFAULT)
)

Batasan pada tipe data

  • Tipe bilangan bulat: BIGINT, BIGINT UNSIGNED, INT, INT UNSIGNED, MEDIUMINT, MEDIUMINT UNSIGNED, SMALLINT, SMALLINT UNSIGNED, TINYINT, dan TINYINT UNSIGNED

  • Tipe tanggal dan waktu: DATETIME, DATE, dan TIMESTAMP

  • Tipe string: CHAR dan VARCHAR