Todos os produtos
Search
Central de documentação

PolarDB:Particionamento LIST COLUMNS

Última atualização: Jun 28, 2026

O particionamento LIST COLUMNS é uma variação do particionamento LIST que aceita múltiplas colunas de chave de partição e dispensa o uso de funções de partição para converter valores de coluna em inteiros. É possível utilizar diretamente colunas do tipo string, data e datetime como chaves de partição. Para comparar os dois métodos, consulte a tabela Comparação entre particionamento LIST e particionamento LIST COLUMNS na visão geral.

Sintaxe

Cada partição lista os valores exatos de coluna que lhe pertencem. Os valores devem ser únicos em todas as partições. Utilize a partição opcional DEFAULT para capturar todas as linhas que não correspondam a nenhuma outra partição.

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

Limitações

  • O particionamento LIST COLUMNS não oferece suporte a funções de partição.

  • Por padrão, uma tabela particionada pode conter até 8.192 partições.

  • Uma chave de partição pode ser composta por até cinco colunas, por padrão.

  • Cada nome de partição deve ser único e ter no máximo 16 caracteres, por padrão.

  • Para usar uma coluna TIMESTAMP como chave de partição, aplique a função UNIX_TIMESTAMP a essa coluna.

Tipos de dados suportados

O particionamento LIST COLUMNS aceita os seguintes tipos de dados para colunas de chave de partição:

  • Tipos inteiros: BIGINT, BIGINT UNSIGNED, INT, INT UNSIGNED, MEDIUMINT, MEDIUMINT UNSIGNED, SMALLINT, SMALLINT UNSIGNED, TINYINT, TINYINT UNSIGNED

  • Tipos de data e hora: DATETIME, DATE, TIMESTAMP

  • Tipos de string: CHAR, VARCHAR

  • Tipo de ponto fixo: DECIMAL (os dígitos fracionários devem ser 0)

Exemplos

Particionamento por coluna de string

Um caso de uso comum consiste em direcionar linhas para partições com base em uma coluna de string, como região ou categoria. O exemplo abaixo crie uma tabela de clientes particionada pelo nome da cidade, agrupando as cidades em regiões de vendas:

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

A partição p_other captura todas as linhas em que city não corresponde a nenhum dos valores listados.

Particionamento por chave de partição composta

Utilize uma chave de partição composta (várias colunas) quando for necessário direcionar linhas com base em uma combinação de valores. O exemplo a seguir particiona pedidos usando tanto birthday quanto 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)
);

A partição pm é uma partição DEFAULT que captura as linhas não correspondidas por p1, p2 ou p3.

Nota

Quando a lista de valores discretos se torna extensa (por exemplo, centenas de datas), o particionamento RANGE COLUMNS geralmente é mais prático para definição e manutenção.