Tous les produits
Search
Centre de documentation

PolarDB:Partitionnement LIST COLUMNS

Dernière mise à jour :Aug 11, 2026

Le partitionnement LIST COLUMNS est une variante du partitionnement LIST qui prend en charge plusieurs colonnes de clé de partition sans nécessiter de fonction pour convertir les valeurs en entiers. Vous pouvez utiliser directement des colonnes de type chaîne, date ou datetime comme clés de partition. Pour comparer ces deux méthodes, consultez le tableau Comparaison entre le partitionnement LIST et le partitionnement LIST COLUMNS dans la vue d'ensemble.

Syntaxe

Chaque partition liste les valeurs exactes de colonne qui lui sont associées. Ces valeurs doivent être uniques sur l'ensemble des partitions. Utilisez la partition optionnelle DEFAULT pour regrouper toutes les lignes ne correspondant à aucune autre partition.

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, ...]

Limites

  • Le partitionnement LIST COLUMNS ne prend pas en charge les fonctions de partition.

  • Par défaut, une table partitionnée peut contenir jusqu'à 8 192 partitions.

  • Une clé de partition peut comporter jusqu'à cinq colonnes par défaut.

  • Chaque nom de partition doit être unique et sa longueur est limitée à 16 caractères par défaut.

  • Pour utiliser une colonne TIMESTAMP comme clé de partition, appliquez la fonction UNIX_TIMESTAMP à cette colonne.

Types de données pris en charge

Le partitionnement LIST COLUMNS accepte les types de données suivants pour les colonnes de clé de partition :

  • Types entiers : BIGINT, BIGINT UNSIGNED, INT, INT UNSIGNED, MEDIUMINT, MEDIUMINT UNSIGNED, SMALLINT, SMALLINT UNSIGNED, TINYINT, TINYINT UNSIGNED

  • Types date et heure : DATETIME, DATE, TIMESTAMP

  • Types chaîne : CHAR, VARCHAR

  • Type à virgule fixe : DECIMAL (le nombre de décimales doit être égal à 0)

Exemples

Partitionnement par colonne de type chaîne

Un cas d'usage courant consiste à router les lignes vers des partitions selon une colonne de type chaîne, telle qu'une région ou une catégorie. L'exemple suivant crée une table clients partitionnée par nom de ville, en regroupant les villes par régions commerciales :

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)
);

La partition p_other capture toutes les lignes dont la valeur de city ne correspond à aucune des valeurs listées.

Partitionnement par clé composite

Utilisez une clé de partition composite (plusieurs colonnes) lorsque le routage des lignes dépend d'une combinaison de valeurs. L'exemple suivant partitionne les commandes à la fois par birthday et par 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)
);

La partition pm est une partition DEFAULT qui récupère les lignes non couvertes par p1, p2 ou p3.

Remarque

Lorsque la liste des valeurs discrètes devient volumineuse (par exemple, des centaines de dates), le partitionnement RANGE COLUMNS est généralement plus simple à définir et à maintenir.