Wie im Handbuch erklärt:http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html
Dies ist einfach durch Hash-Partitionierung der Monatsausgabe möglich.
CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
ENGINE=INNODB
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;
Beachten Sie, dass dies nur nach Monaten und nicht nach Jahren partitioniert wird, außerdem gibt es in diesem Beispiel nur 6 Partitionen (also 6 Monate).
Und zum Partitionieren einer bestehenden Tabelle (Anleitung: 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;
Die Abfrage kann sowohl aus der gesamten Tabelle erfolgen:
SELECT * from ti;
Oder von bestimmten Partitionen:
SELECT * from ti PARTITION (HASH(MONTH(some_date)));