Todos os produtos
Search
Central de documentação

PolarDB:LIST

Última atualização: Jun 28, 2026

O particionamento LIST atribui linhas a partições com base na correspondência entre o valor de uma coluna e um conjunto predefinido de valores discretos. Utilize esse método quando os dados se enquadram em categorias bem definidas — como regiões de vendas, tipos de produtos ou códigos de status — e você deseja isolar cada categoria em sua própria partição para otimizar consultas e operações no nível da partição, como exclusões em massa.

O PolarDB for MySQL oferece suporte a duas variantes:

  • LIST: particiona por uma única expressão INT.

  • LIST COLUMNS: particiona por uma ou mais colunas dos tipos INT, string, DATE ou DATETIME.

Sintaxe

CREATE TABLE ... PARTITION BY LIST {(expr) | COLUMNS(column_list)}
(
    partition_definition [, partition_definition] ...
);

Cada partition_definition segue este formato:

PARTITION partition_name
    VALUES IN (value_list)

Parâmetros

Parâmetro

Descrição

expr

Expressão de particionamento. Deve retornar um valor INT. Não há suporte para expressões de string.

column_list

Lista de colunas de chave de particionamento usada com LIST COLUMNS. Não aceita expressões; permite apenas referências diretas a colunas.

value_list

Valores enumerados que mapeiam as linhas para esta partição. Os valores devem ser exclusivos em todas as partições da tabela.

partition_name

Nome da partição. Deve ser exclusivo na tabela.

Restrições

LIST:

  • A expressão deve retornar um valor INT. Expressões de string não são aceitas.

  • Aceita apenas chave de particionamento de coluna única.

LIST COLUMNS:

  • Não aceita expressões; permite somente referências a colunas.

  • Aceita chaves de particionamento com múltiplas colunas.

  • Tipos de coluna compatíveis: INT, tipos de string, DATE e DATETIME.

Exemplos

Particionamento por uma coluna INT (LIST)

No exemplo abaixo, uma tabela de vendas é particionada pela coluna amount. Linhas com valores 1 ou 2 em amount vão para a partição p0, valores 3 ou 4 para p1 e valores 5 ou 6 para 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)
);

Particionamento por uma coluna de string (LIST COLUMNS)

Como o LIST COLUMNS aceita colunas do tipo string, é possível particionar diretamente por um valor de texto sem mapeamento numérico. O exemplo a seguir agrupa países em três partições regionais.

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