Todos os produtos
Search
Central de documentação

PolarDB:RANGE

Última atualização: Jun 28, 2026

O particionamento por intervalo divide os dados da tabela em partições com base no valor de uma coluna dentro de um intervalo definido. Cada partição armazena linhas cuja chave de partição é menor que um valor limite especificado, e esses limites devem ser estritamente incrementais.

O particionamento por intervalo funciona bem quando você precisa:

  • Consultar ou excluir dados por período — descarte uma partição inteira em vez de executar um comando DELETE com filtro de data, o que é significativamente mais rápido em tabelas grandes.

  • Particionar por um intervalo numérico contínuo — como valores de vendas, IDs ou pontuações.

  • Melhorar o desempenho de consultas via pruning de partições — consultas que filtram pela chave de partição podem ignorar completamente as partições irrelevantes.

O PolarDB for MySQL oferece suporte a duas formas: PARTITION BY RANGE (baseada em expressão, coluna única) e PARTITION BY RANGE COLUMNS (baseada em colunas, com suporte a múltiplas colunas e mais tipos de dados).

Sintaxe

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

Em que partition_definition é:

PARTITION partition_name
    VALUES LESS THAN {(value | value_list) | MAXVALUE}

Parâmetros

Parâmetro

Descrição

expr

Expressão de partição. Deve resultar em um valor INT. Não há suporte para tipos string.

column_list

Lista de colunas de chave de partição para uso com RANGE COLUMNS. Não aceita expressões; apenas nomes de colunas são permitidos.

value

Valor do limite superior de uma partição.

value_list

Lista de valores de limite superior, um por coluna. Utilizado com RANGE COLUMNS quando há múltiplas chaves de partição.

MAXVALUE

Valor máximo da partição. Sempre adicione uma partição MAXVALUE como última partição para garantir que todas as linhas tenham uma partição correspondente.

partition_name

Nome da partição. Deve ser único na tabela.

RANGE vs RANGE COLUMNS

Recurso

**PARTITION BY RANGE**

**PARTITION BY RANGE COLUMNS**

Quantidade de chaves de partição

Apenas coluna única

Uma ou mais colunas

Expressões

Suportadas

Não suportadas; apenas nomes de colunas

Tipos de dados suportados

INT (a expressão deve resultar em INT)

INT, tipos string, DATE, DATETIME

Utilize RANGE COLUMNS quando precisar particionar diretamente por uma coluna DATE ou DATETIME, ou quando for necessária uma chave de partição composta por várias colunas.

Exemplos

Particionamento por intervalo numérico

O exemplo a seguir particiona uma tabela de vendas pela coluna amount. Cada partição contém linhas em que amount é menor que o valor limite. A última partição usa MAXVALUE para capturar todas as linhas restantes.

CREATE TABLE sales_range
(
  dept_no     INT,
  part_no     INT,
  country     VARCHAR(20),
  date        DATE,
  amount      INT
)
PARTITION BY RANGE(amount)
(
  PARTITION p0 VALUES LESS THAN (1000),
  PARTITION p1 VALUES LESS THAN (2000),
  PARTITION p2 VALUES LESS THAN (3000),
  PARTITION p3 VALUES LESS THAN (MAXVALUE)
);

Particionamento por coluna de data (RANGE COLUMNS)

Com RANGE COLUMNS, é possível particionar diretamente por uma coluna DATE sem envolvê-la em uma expressão. O exemplo abaixo cria partições mensais na coluna create_date.

CREATE TABLE sales_range_columns
(
  dept_no       INT,
  part_no       INT,
  country       VARCHAR(20),
  create_date   DATE,
  amount        INT
)
PARTITION BY RANGE COLUMNS(create_date)
(
  PARTITION p1 VALUES LESS THAN ('2023-01-01'),
  PARTITION p2 VALUES LESS THAN ('2023-02-01'),
  PARTITION p3 VALUES LESS THAN ('2023-03-01'),
  PARTITION p4 VALUES LESS THAN ('2023-04-01')
);

Particionamento por múltiplas colunas (RANGE COLUMNS)

O RANGE COLUMNS permite o uso de chaves de partição compostas.

CREATE TABLE sales_range_columns
(
  dept_no   INT,
  part_no   INT,
  country   VARCHAR(20),
  date      DATE,
  amount    INT
)
PARTITION BY RANGE COLUMNS(dept_no, part_no)
(
  PARTITION p1 VALUES LESS THAN (1000, MAXVALUE),
  PARTITION p2 VALUES LESS THAN (2000, MAXVALUE),
  PARTITION p3 VALUES LESS THAN (3000, MAXVALUE),
  PARTITION p4 VALUES LESS THAN (4000, MAXVALUE)
);