Phân vùng trong MySQL 5.1 chỉ có thể xử lý các cột số nguyên ( Nguồn ). Bạn chỉ có thể sử dụng một một vài hàm phân vùng trên các cột không phải số nguyên. Ví dụ:
CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
ENGINE=INNODB
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;
Bạn cũng có thể sử dụng phân vùng khóa trong MySQL 5.1, miễn là khóa chính bao gồm tất cả các cột trong chức năng phân vùng của bảng:
CREATE TABLE k1 (
id CHAR(3) NOT NULL PRIMARY KEY,
value int
)
PARTITION BY KEY(id)
PARTITIONS 10;
Mặt khác, trong MySQL 5.5, bạn có thể sử dụng phân vùng cột phạm vi hoặc phân vùng cột danh sách trên nhiều loại dữ liệu, bao gồm cả các cột dựa trên ký tự.
Ví dụ về cột danh sách:
CREATE TABLE expenses (
expense_date DATE NOT NULL,
category VARCHAR(30),
amount DECIMAL (10,3)
);
ALTER TABLE expenses
PARTITION BY LIST COLUMNS (category)
(
PARTITION p01 VALUES IN ('lodging', 'food'),
PARTITION p02 VALUES IN ('flights', 'ground transportation'),
PARTITION p03 VALUES IN ('leisure', 'customer entertainment'),
PARTITION p04 VALUES IN ('communications'),
PARTITION p05 VALUES IN ('fees')
);
Ví dụ về Cột Phạm vi:
CREATE TABLE range_test (
code CHAR(3),
value INT
)
PARTITION BY RANGE COLUMNS(code) (
PARTITION p0 VALUES LESS THAN ('MMM'),
PARTITION p1 VALUES LESS THAN ('ZZZ')
);
Đọc thêm:
- Hướng dẫn Tham khảo MySQL 5.1 ::Phân vùng khóa
- Tìm hiểu sâu về các cải tiến phân vùng MySQL 5.5
- Hướng dẫn sử dụng Tham chiếu MySQL 5.5 ::Cột phạm vi phân vùng
- Sổ tay Tham khảo MySQL 5.5 ::Danh sách cột phân vùng