gpt4 book ai didi

mysql - 如何根据 char 列对 MySQL 表进行分区?

转载 作者:可可西里 更新时间:2023-11-01 06:32:10 24 4
gpt4 key购买 nike

是否可以根据 char 列进行分区?

查看 MySQL 5.1 文档后,似乎只能使用整数类型。

这是正确的吗?或者我可以使用一些函数将 char 转换为整数吗?

有问题的 char 字段包含一个唯一标识符。

最佳答案

MySQL 5.1 中的分区只能处理整数列 (Source)。您只能使用 few partitioning functions在非整数列上。例如:

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

您还可以使用 key partitioning在 MySQL 5.1 中,只要主键包括表的分区函数中的所有列:

CREATE TABLE k1 (
id CHAR(3) NOT NULL PRIMARY KEY,
value int
)
PARTITION BY KEY(id)
PARTITIONS 10;

另一方面,在 MySQL 5.5 中,您可以使用 range column partitioninglist column partitioning适用于各种数据类型,包括基于字符的列。

列表列示例:

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 - 如何根据 char 列对 MySQL 表进行分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3753317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com