4、key分区
根据MySQL数据库提供的散列函数进行分区
- CREATE TABLE k1 (
- id INT NOT NULL,
- name VARCHAR(20),
- UNIQUE KEY (id)
- )
- PARTITION BY KEY()
- PARTITIONS 2;
复制代码
KEY仅列出零个或多个列名称。 用作分区键的任何列必须包含表的主键的一部分或全部,如果该表具有一个。 如果没有列名称作为分区键,则使用表的主键(如果有)。如果没有主键,但是有一个唯一的键,那么唯一键用于分区键。但是,如果唯一键列未定义为NOT NULL,则上一条语句将失败。
与其他分区类型不同,KEY使用的分区不限于整数或空值。 例如,以下CREATE TABLE语句是有效的:
- CREATE TABLE tm1 (
- s1 CHAR(32) PRIMARY KEY
- )
- PARTITION BY KEY(s1)
- PARTITIONS 10;
复制代码
注意:对于key分区表,不能执行ALTER TABLE DROP PRIMARY KEY,因为这样做会生成错误
- ERROR 1466 (HY000): Field in list of fields for partition function not found in table.
复制代码
5、Column分区
COLUMN分区是5.5开始引入的分区功能,只有RANGE COLUMN和LIST COLUMN这两种分区;支持整形、日期、字符串;RANGE和LIST的分区方式非常的相似。
COLUMNS和RANGE和LIST分区的区别
1)针对日期字段的分区就不需要再使用函数进行转换了,例如针对date字段进行分区不需要再使用YEAR()表达式进行转换。
2)COLUMN分区支持多个字段作为分区键但是不支持表达式作为分区键。
column支持的数据类型:
1)所有的整型,float和decimal不支持
2)日期类型:date和datetime,其他不支持
3)字符类型:CHAR, VARCHAR, BINARY和VARBINARY,blob和text不支持
单列的column range分区
|
|