sql >> Base de Datos >  >> RDS >> Mysql

Partición de tabla MySQL por mes

Como se explica en el manual:http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html

Esto es fácilmente posible mediante la partición hash de la salida del mes.

CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
    ENGINE=INNODB
    PARTITION BY HASH( MONTH(tr_date) )
    PARTITIONS 6;

Tenga en cuenta que esto solo se divide por mes y no por año, también hay solo 6 particiones (por lo tanto, 6 meses) en este ejemplo.

Y para particionar una tabla 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;

La consulta se puede realizar tanto desde la tabla completa:

SELECT * from ti;

O de particiones específicas:

SELECT * from ti PARTITION (HASH(MONTH(some_date)));