O particionamento RANGE COLUMNS estende o particionamento RANGE padrão com dois recursos principais: suporte a múltiplas colunas de partição e tipos de dados não inteiros, incluindo strings, DATE e DATETIME. Use esse método quando o particionamento RANGE apenas para inteiros ou de coluna única não atender às suas necessidades de distribuição de dados.
Para obter uma comparação completa, consulte a visão geral dos tipos de partição.
Sintaxe
CREATE TABLE ...
PARTITION BY RANGE COLUMNS (partition_column_list) [PARTITIONS number]
(
PARTITION part_name VALUES LESS THAN (range_bound_value_list),
PARTITION part_name VALUES LESS THAN (range_bound_value_list),
...
)
partition_column_list:
partition_column[, partition_column, ...]
range_bound_value_list:
range_bound_value[, range_bound_value, ...]
Os limites das partições devem ser estritamente crescentes. Use MAXVALUE como limite superior da última partição para abranger todas as linhas restantes.
Tipos de dados compatíveis
|
Categoria de tipo |
Tipos compatíveis |
|
Tipos inteiros |
|
|
Tipos de data e hora |
|
|
Tipos de string |
|
|
Tipo de ponto fixo |
|
Limitações
|
Limite |
Valor padrão |
|
Funções de particionamento |
Não compatível — especifique os nomes das colunas diretamente |
|
Máximo de partições por tabela |
8.192 |
|
Máximo de colunas por chave de partição |
5 |
|
Comprimento máximo do nome da partição |
16 caracteres (deve ser único) |
Exemplos
Particionamento por chave composta (data e ID)
Particione os registros usando uma chave composta de birthday e id para crie intervalos baseados em ano, com um subintervalo baseado em ID dentro de cada ano:
CREATE TABLE tb_rc(
id BIGINT NOT NULL AUTO_INCREMENT,
bid INT,
name VARCHAR(30),
birthday DATETIME NOT NULL,
PRIMARY KEY(id)
)
PARTITION BY RANGE COLUMNS(birthday, id)
(
PARTITION p1 VALUES LESS THAN('2020-01-01', 1000),
PARTITION p2 VALUES LESS THAN('2021-01-01', 2000),
PARTITION p3 VALUES LESS THAN('2022-01-01', 3000),
PARTITION pm VALUES LESS THAN(MAXVALUE, MAXVALUE)
);
A partição final pm usa MAXVALUE para ambas as colunas e captura todas as linhas que não se enquadram nos limites anteriores.