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

Partição de tabela MySQL por mês


Conforme explicado no manual:http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html

Isso é facilmente possível pelo particionamento de hash da saída do mês.
CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
    ENGINE=INNODB
    PARTITION BY HASH( MONTH(tr_date) )
    PARTITIONS 6;

Observe que isso apenas partições por mês e não por ano, também existem apenas 6 partições (portanto, 6 meses) neste exemplo.

E para particionar uma tabela existente (manual: https://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html ):
ALTER TABLE ti
    PARTITION BY HASH( MONTH(tr_date) )
    PARTITIONS 6;

A consulta pode ser feita a partir de toda a tabela:
SELECT * from ti;

Ou de partições específicas:
SELECT * from ti PARTITION (HASH(MONTH(some_date)));