Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como particionar uma tabela MySQL com base na coluna char?


O particionamento no MySQL 5.1 só pode lidar com colunas inteiras (Fonte ). Você só pode usar algumas funções de particionamento em colunas não inteiras. Por exemplo:
CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
   ENGINE=INNODB
   PARTITION BY HASH( MONTH(tr_date) )
   PARTITIONS 6;

Você também pode usar o particionamento de chave no MySQL 5.1, desde que a chave primária inclua todas as colunas na função de particionamento da tabela:
CREATE TABLE k1 (
   id CHAR(3) NOT NULL PRIMARY KEY,
   value int
)
PARTITION BY KEY(id)
PARTITIONS 10;

Por outro lado, no MySQL 5.5, você pode usar particionamento de coluna de intervalo ou listar particionamento de colunas em uma ampla variedade de tipos de dados, incluindo colunas baseadas em caracteres.

Exemplo de colunas de lista:
CREATE TABLE expenses (
   expense_date DATE NOT NULL,
   category VARCHAR(30),
   amount DECIMAL (10,3)
);

ALTER TABLE expenses
PARTITION BY LIST COLUMNS (category)
(
   PARTITION p01 VALUES IN ('lodging', 'food'),
   PARTITION p02 VALUES IN ('flights', 'ground transportation'),
   PARTITION p03 VALUES IN ('leisure', 'customer entertainment'),
   PARTITION p04 VALUES IN ('communications'),
   PARTITION p05 VALUES IN ('fees')
);

Exemplo de colunas de intervalo:
CREATE TABLE range_test (
   code CHAR(3),
   value INT
)
PARTITION BY RANGE COLUMNS(code) (
   PARTITION p0 VALUES LESS THAN ('MMM'),
   PARTITION p1 VALUES LESS THAN ('ZZZ')
);

Leitura adicional: