博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

mysql 分区

Posted on 2017-10-24 23:54  星_初落  阅读(145)  评论(0编辑  收藏  举报


当一张表的数据非常多的时候,比如单个.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()函数