分区表
 
分区表的优点:
数据分开存放在不同的文件,可以支持更大的数据文件
在某些特定条件下能提高查询、删除、更新的效率

 
1、range分区表
  mysql> create table mytest(id int,name varchar(20) not null,birthday date,primary key(id,birthday))auto_increment=1 partition by range(year(birthday))( partition p01 values less than (2000), partition p02 values less than (2010), partition p03 values less than maxvalue);
 
 
  练习:创建一个新表,包含学生编号,学生姓名,联系电话、所属院系四个字段,其中院系为5个数字值,分别为
  1、2、3、4、5代表五个不同的院系,要求将表里面的数据按院系分别保存到5个不同的数据文件,创建完成后
  观察数据文件的名称和大小等信息,并插入几条数据
 

2、list分区表
  mysql> create table mytest1(sid int not null,name varchar(20),area varchar(10)) partition by list (sid) (partition p01 values in (1,2), partition p02 values in (3,4),partition p03 values in (5,6));
  注意:要求分区的列必须是整数类型
 
  练习:创建一个包含员工id、员工姓名、员工住址的表,将员工id的尾数为1、4、7的存放到p01分区,2、5、8的
       存放到p02分区,3、6、9存放到p03分区,然后存储id为1-10的10个数据,观察存储情况
 

 
  mysql> create table xixi(id int not null,name varchar(20),addr varchar(10)) partition by list (id%10) (partition p01 values in (1,4,7),partition p02 values in (2,5,8),partition p03 values in (3,6,9));

  
3、hash分区表
  mysql> create table mytest1(sid int not null,name varchar(20),area varchar(10)) partition by hash (sid) partitions 3;
 
  mysql> create table mytest1(sid int not null,name varchar(20),area varchar(10)) partition by linear hash (sid) partitions 3;
 
4、key分区
  mysql> create table mytest1(sid int not null,name varchar(20),area varchar(10)) partition by key (area) partitions 3;
 
  mysql> create table mytest1(sid int not null,name varchar(20),area varchar(10)) partition by linear key (area) partitions 3;
5、分区管理
 新增分区
 mysql> alter table sinfo add partition (partition gd06 values less than (7));
 mysql> alter table mytest1 partition by key(area) partitions 4;

  alter table haha add partition (partition p03 values in (3,6,9));

  删除分区
 mysql> alter table sinfo drop partition gd01;
 mysql> alter table mytest1 partition by key(area) partitions 3;
 
 合并分区
 

  mysql> alter table sinfo reorganize partition p03,p04 into (
   -> partition p034 values in (0,3,6,9));