深入MySQL--MySQL分区表详解2

4、key分区

根据MySQL数据库提供的散列函数进行分区

  1. CREATE TABLE k1 (
  2.     id INT NOT NULL,
  3.     name VARCHAR(20),
  4.     UNIQUE KEY (id)
  5. )
  6. PARTITION BY KEY()
  7. PARTITIONS 2;
复制代码


KEY仅列出零个或多个列名称。 用作分区键的任何列必须包含表的主键的一部分或全部,如果该表具有一个。 如果没有列名称作为分区键,则使用表的主键(如果有)。如果没有主键,但是有一个唯一的键,那么唯一键用于分区键。但是,如果唯一键列未定义为NOT NULL,则上一条语句将失败。

与其他分区类型不同,KEY使用的分区不限于整数或空值。 例如,以下CREATE TABLE语句是有效的:

  1. CREATE TABLE tm1 (
  2.     s1 CHAR(32) PRIMARY KEY
  3. )
  4. PARTITION BY KEY(s1)
  5. PARTITIONS 10;
复制代码


注意:对于key分区表,不能执行ALTER TABLE DROP PRIMARY KEY,因为这样做会生成错误

  1. 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分区
游客,如果您要查看本帖隐藏内容请回复
标签: 暂无标签
lee

写了 77 篇文章,拥有财富 653,被 13 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

成为第一个吐槽的人

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈