指定某一连续区间,把对应的行数据分配给分区。
例子:
CREATE TABLE t22 (uid INT NOT NULL,login_name VARCHAR(45) NOT NULL,age VARCHAR(45) NULL, PRIMARY KEY (uid))
PARTITION BY RANGE ( uid ) (
PARTITION p0 VALUES LESS THAN (3),
PARTITION p1 VALUES LESS THAN (5),
PARTITION p3 VALUES LESS THAN MAXVALUE); # 如果不想后续无法继续添加,可以不写 MAXVALUE 这行
在没有设置MAXVALUE这行的情况下,可以使用下面的语句进行修改
alter table t22 add partition(partition p2 values less than (5));
类似RANGE分区,区别在于LIST是枚举值列表的集合,RANGE是连续的区间值的集合。
例子:
CREATE TABLE t23 (sku_id INT NOT NULL,sku_type INT NOT NULL, PRIMARY KEY (uid))
PARTITION BY LIST ( sku_type ) (
PARTITION p0 VALUES IN (1,3),
PARTITION p1 VALUES IN (2,4));
子分区(subpartitioning)也称为复合分区(composite partitioning),针对每个分区的进一步划分。
例子:
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;
Mysql中还提供一个名为LINEAR HASH分区的方式,和Hash算法不同,其他的一样
例子:
CREATE TABLE k1(
id INT NOT NULL,
name VARCHAR(20),
UNIQUE KEY (id)
)
PARTITION BY KEY(这里是key)
PARTITIONS 2;
如果觉得有收获就点个赞吧,更多知识,请点击关注查看我的主页信息哦~