range分区的概念
range分区是利用取值范围(区间)划分分区,区间要连续并且不能互相重叠,使用values less than操作符进行分区定义。
实际操作
下面我们将人的年龄划分为70后,80后,90后,不同年龄的人被放在不同的分区里
create table range_1(
id mediumint unsigned auto_increment not null,
birthday date,
primary key (id,birthday)
)engine=MyISAM partition by range(year(birthday))(
partition 70hou values less than(1980),
partition 80hou values less than(1990),
partition 90hou values less than(2000)
);
year()是sql中自带的函数,用于提取日期中的年份
70hou 80hou 90hou这是分区的名字,less than是小于的意思
插入数据进行测试
insert into range_1 values(null,'1972-05-20');
insert into range_1 values(null,'1983-03-20');
insert into range_1 values(null,'1984-04-20');
查看数据结构
图片.png
当插入一个数据不在分区之内会怎么样?比如现在插入一个00后
图片.png
因为没有符合条件的分区,所以这里就会报错.
如果id的大小可以预测:我们就可以这么指定分区:
create table range_1(
id mediumint unsigned auto_increment not null,
birthday date,
primary key (id)
)engine=MyISAM partition by range(id)(
partition 70hou values less than(1000),
partition 80hou values less than(2000),
partition 90hou values less than(3000)
);
将不同的根据id的范围放到不同的分区中.
总结
range就是范围分区,提前做好分区条件,然后插入值.这时每个值会找到适合自己的分区,然后存放进去.终于写完了四个分区,希望大家认真的看一看,有问题就下方留言,一起讨论.
网友评论