Както е обяснено в ръководството:http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html
Това е лесно възможно чрез разделяне на хеш на изхода за месеца.
CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
ENGINE=INNODB
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;
Имайте предвид, че това се разделя само по месеци, а не по година, също така има само 6 дяла (така че 6 месеца) в този пример.
И за разделяне на съществуваща таблица (ръчно: 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;
Запитването може да се извърши както от цялата таблица:
SELECT * from ti;
Или от конкретни дялове:
SELECT * from ti PARTITION (HASH(MONTH(some_date)));