Mysql
 sql >> Database >  >> RDS >> Mysql

Partizione della tabella MySQL per mese

Come spiegato nel manuale:http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html

Ciò è facilmente possibile tramite il partizionamento hash dell'output del mese.

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

Nota che questa partiziona solo per mese e non per anno, inoltre ci sono solo 6 partizioni (quindi 6 mesi) in questo esempio.

E per partizionare una tabella esistente (manuale: 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'interrogazione può essere eseguita sia dall'intera tabella:

SELECT * from ti;

O da partizioni specifiche:

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