Theo giải thích của sách hướng dẫn: http://dev.mysql .com / doc / refman / 5.6 / en / partitioning-Overview.html
Điều này có thể dễ dàng thực hiện được bằng cách phân vùng băm của đầu ra tháng.
CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
ENGINE=INNODB
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;
Lưu ý rằng điều này chỉ phân vùng theo tháng chứ không phải theo năm, cũng chỉ có 6 phân vùng (vì vậy 6 tháng) trong ví dụ này.
Và để phân vùng một bảng hiện có (thủ công: 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;
Có thể thực hiện cả hai truy vấn từ toàn bộ bảng:
SELECT * from ti;
Hoặc từ các phân vùng cụ thể:
SELECT * from ti PARTITION (HASH(MONTH(some_date)));