mysql分区之ragne分区

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就是范围分区,提前做好分区条件,然后插入值.这时每个值会找到适合自己的分区,然后存放进去.终于写完了四个分区,希望大家认真的看一看,有问题就下方留言,一起讨论.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-13000: 维数超出范围 ORA-13001: 维数不匹配错误 ORA-13002: 指定的级别超出范围...
    thinkact阅读 19,513评论 1 5
  • 分区是指根据一定的规则,数据库把一个表分解成多个更小的,更容易管理的部分。就访问数据库的应用而言,逻辑上只有一个表...
    微日月阅读 1,520评论 0 7
  • MySQL从5.1版本开始支持分区功能,它允许可设置的一定逻辑,跨文件系统分配单个表的多个部分,但是就访问数据库而...
    仔仔H阅读 3,093评论 0 1
  • 原文链接:http://blog.csdn.net/qq_22329521/article/details/538...
    越长越圆阅读 848评论 3 16
  • mysql高级之表分区 下列说明为个人见解,欢迎交流指正。 1、表分区简介 1.1 问题概述 问题引出:假设一个商...
    道无虚阅读 33,478评论 1 19