Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Tabellenpartition nach Monat

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)));