Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Partycja tabeli MySQL według miesiąca

Jak wyjaśniono w instrukcji:http://dev.mysql .com/doc/refman/5.6/en/partitioning-overview.html

Jest to łatwo możliwe dzięki podziałowi haszującemu danych wyjściowych miesiąca.

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

Zwróć uwagę, że to tylko partycje według miesiąca, a nie według roku, również w tym przykładzie jest tylko 6 partycji (a więc 6 miesięcy).

Oraz do partycjonowania istniejącej tabeli (instrukcja: 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;

Zapytania można wykonać zarówno z całej tabeli:

SELECT * from ti;

Lub z określonych partycji:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP/MySQL - Najlepszy sposób na stworzenie unikalnego, losowego ciągu?

  2. Nie podano danych dla parametrów w przygotowanym zestawieniu

  3. Niepoprawny plik klucza MySQL dla tabeli tmp podczas tworzenia wielu złączeń

  4. Zmień typ kolumny z Date na DateTime podczas migracji ROR

  5. Data MySQL czy czas PHP?