Mysql
 sql >> Base de données >  >> RDS >> Mysql

Partition de table MySQL par mois

Comme expliqué dans le manuel :http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html

Ceci est facilement possible en partitionnant par hachage la sortie du mois.

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

Notez que cela ne partitionne que par mois et non par année, il n'y a également que 6 partitions (donc 6 mois) dans cet exemple.

Et pour partitionner une table existante (manuel : 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;

L'interrogation peut être effectuée à partir de la table entière :

SELECT * from ti;

Ou depuis des partitions spécifiques :

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