mysql分区(partion)之range(范围)-----------01教程
查看数据库是否支持分区 show variables like "%partition%"
5.6版本更改了为 show plugins (plugin 为插件,列出来以后最后一个插件就是)
1.根据列分区,如果要设置这个表的索引,只能是指定分区的这个列
create table t\_prange(
id int not null,
fname varchar(30),
lname varchar(30),
hired date not null default '2019-01-01',
separated date not null default '9999-12-31',
job\_code int not null,
store\_id int not null
)
partition by range(store\_id)(
partition p0 values less than (6),
partition p1 values less than (11),
partition p2 values less than (16),
partition p3 values less than (21)
);
查看创建表的信息,show create table t\_prange; 可以看到和不分区的表的区别就是还可以看到分区的信息。
在根据以上创建表的信息是不能插入store\_id大于20的,不然找不到分区。
insert into t\_prange(id,fname,lname,job\_code,store\_id) value(1,'aa','tt',100,10);
insert into t\_prange(id,fname,lname,job\_code,store\_id) value(1,'aa','tt',100,21);
以上两条sql,第二条就不能插入,原因是store\_id 大于20.
当我们改一下表的分区结构
create table t\_prange2(
id int not null,
fname varchar(30),
lname varchar(30),
hired date not null default '2019-01-01',
separated date not null default '9999-12-31',
job\_code int not null,
store\_id int not null
)
partition by range(store\_id)(
partition p0 values less than (6),
partition p1 values less than (11),
partition p2 values less than (16),
partition p3 values less than maxvalue
);
同样的两条sql
insert into t\_prange2(id,fname,lname,job\_code,store\_id) value(1,'aa','tt',100,10);
insert into t\_prange2(id,fname,lname,job\_code,store\_id) value(1,'aa','tt',100,21);
当store\_id大于16的时候,默认放到p3分区