當一張表的數據非常多的時候,比如單個.myd文件都達到10G,必然讀取起來效率降低。這時就可以用mysql自帶的partition(分區功能),可以把表的數據分開在幾張表上,根據不同的區域來查詢數據以達到優化目的。mysql將會根據指定的規則,把數據放在不同的表文件上.相當於在文件上,被拆成了小塊. ...
當一張表的數據非常多的時候,比如單個.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()函數