sql >> Databáze >  >> RDS >> Mysql

Rozdělení tabulky MySQL podle měsíce

Jak je vysvětleno v příručce:http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html

To je snadno možné pomocí hašovacího rozdělení měsíčního výstupu.

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

Všimněte si, že se jedná pouze o oddíly podle měsíce a ne podle roku, v tomto příkladu je také pouze 6 oddílů (takže 6 měsíců).

A pro rozdělení existující tabulky (manuál: 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;

Dotazování lze provádět jak z celé tabulky:

SELECT * from ti;

Nebo z konkrétních oddílů:

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


  1. MySQL nepoužívá indexy s klauzulí WHERE IN?

  2. Balíček SSIS nechce načíst metadata dočasné tabulky

  3. Oracle Cloud:Vytvoření databáze ATP (Autonomous Transaction Processing).

  4. Kontrola a optimalizace databáze MySQL automaticky pomocí Crontab/Cron