mysql 分区

  • 时间:2017-12-08
  • 分类:数据库/系统
  • 1044 人浏览
[导读]当一张表的数据非常多的时候,比如单个.myd文件都达到10G,必然读取起来效率降低。这时就可以用mysql自带的partition分区功能,可以把表的数据分开在几张表上,根据不同的区域来查询数据以达到优化目的。


当一张表的数据非常多的时候,比如单个.myd文件都达到10G,必然读取起来效率降低。这时就可以用mysql自带的partition(分区功能),可以把表的数据分开在几张表上,根据不同的区域来查询数据以达到优化目的。

mysql将会根据指定的规则,把数据放在不同的表文件上.
相当于在文件上,被拆成了小块.
但是,给客户的界面,还是1张表.


partition 语句

(范围分区法)
文章表
create table news(表名)(
->tid int primary key auto_increment,
->title char(20) not null default ''
->)engine myisam charset utf8
->partition by range(tid)(以哪个字段分区)(
->partition t0 values less than(10),(第一个分区以10结束)
->partition t1 values less than(20),(第fg个分区以20结束)
->partition t2 values less than(MAXVALUE)(以最大的 tid 值结束)
->);
把一张表的id规定为一个范围放在一起,在一定程度上加快查询速度!


(散列分区法)
1=>bj 2=>nj 3=>sh 4=>sz
会员表
create table user(表名)(
->uid int primary key auto_increment,
->name char(20) not null default ''
->aid int() not null default ''
->)engine myisam charset utf8
->partition by list(aname)(
->partition bj(北京,可以自己起名) values in(1),
->partition nj(南京) values in(2),
->partition sh(上海) values in(3),
->partition sz(深圳) values in(4)
->);
要注意用散列分区时列值不要为NULL,不然会报错

mysql不但可以使用id范围分区法、散列分区法还能用年份分区使用year()函数

来源:本文为线上采编,如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除!
标签: mysql 分区