Phân vùng trong MySQL 5.1 chỉ có thể xử lý các cột số nguyên (Source). Bạn chỉ có thể sử dụng một số few partitioning functions 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 key partitioning 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 range column partitioning hoặc list column partitioning trên nhiều loại dữ liệu khác nhau, bao gồm các cột dựa trên ký tự.
Danh sách Cột Ví dụ:
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')
);
Dải Cột Ví dụ:
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:
Nguồn
2010-09-20 16:25:06
Cảm ơn - Tôi đang tìm kiếm hầu hết là HASH/LIST. –