Разделянето в MySQL 5.1 може да работи само с целочислени колони (Източник ). Можете да използвате само няколко функции за разделяне върху нецелочислени колони. Например:
CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
ENGINE=INNODB
PARTITION BY HASH( MONTH(tr_date) )
PARTITIONS 6;
Можете също да използвате разделяне на ключове в MySQL 5.1, стига първичният ключ да включва всички колони във функцията за разделяне на таблицата:
CREATE TABLE k1 (
id CHAR(3) NOT NULL PRIMARY KEY,
value int
)
PARTITION BY KEY(id)
PARTITIONS 10;
От друга страна, в MySQL 5.5 можете да използвате разделяне на колони с диапазон или списъчно разделяне на колони върху голямо разнообразие от типове данни, включително базирани на знаци колони.
Пример за списъчни колони:
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')
);
Пример за колони за диапазон:
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')
);
Допълнително четене:
- Справочно ръководство за MySQL 5.1 ::Разделяне на ключове
- Дълбок поглед върху подобренията на MySQL 5.5 на дяловете
- Справочно ръководство за MySQL 5.5 ::колони за диапазон разделяне
- Справочно ръководство за MySQL 5.5 ::Списъци с колони разделяне