Som förklaras av manualen:http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html
Detta är lätt möjligt genom hash-partitionering av månadens utdata.
CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
ENGINE=INNODB
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;
Observera att detta bara delar upp efter månad och inte efter år, det finns också bara 6 partitioner (så 6 månader) i det här exemplet.
Och för att partitionera en befintlig tabell (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;
Fråga kan göras både från hela tabellen:
SELECT * from ti;
Eller från specifika partitioner:
SELECT * from ti PARTITION (HASH(MONTH(some_date)));