sql >> Database >  >> RDS >> Mysql

MySQL-tabelpartitie per maand

Zoals uitgelegd in de handleiding:http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html

Dit is eenvoudig mogelijk door hash-partitionering van de maanduitvoer.

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

Houd er rekening mee dat dit alleen per maand is ingedeeld en niet per jaar, ook zijn er in dit voorbeeld slechts 6 partities (dus 6 maanden).

En voor het partitioneren van een bestaande tabel (handleiding: 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;

Query's kunnen zowel vanuit de hele tabel worden gedaan:

SELECT * from ti;

Of van specifieke partities:

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


  1. mysql - Update automatisch voorvallen in een andere tabel

  2. PHP date('W') vs MySQL JAARWEEK(nu())

  3. MYSQL - Onmogelijk om een ​​externe sleutel te maken

  4. verwijder rij in mijn database met behulp van php pdo