|
分区表顾名思义。把数据分区并且查看。目的是为了更快的检索数据。 创建分区表 有几种分区可以选择。 范围分区:range create table orders_range( id int auto_increment primary key, customer_surname varchar(30), store_id int ,salesperson_id int, order_date date ,note varchar(500) ) engine = innodb partition by range(id) ( partition p0 values less than (10000), partition p1 values less than (20000), partition p2 values less than (30000), partition p3 values less than (40000), partition p4 values less than (50000) );
列表分区: create table orders_list( id int auto_increment,customer_surname varchar(30),store_id int, salesperson_id int , order_date date , note varchar(500), index idx(id)) engine = innodb partition by list (store_id) ( partition p0 values in (1,3,4,17), partition p1 values in (2,12,14),partition p2 values in (6,8,20), partition p3 values in (5,7,9,11,16), partition p4 values in (10, 13,15,18) ); 哈希值分区: create table orders_hash ( id int auto_increment primary key , customer_surname varchar(30), store_id int, salesperson_id int ,order_date date, note varchar(500)) engine =innodb partition by hash(id) partitions 4; key 分区: create table orders_key( id int auto_increment,customer_surname varchar(30),store_id int, salesperson_id int ,order_date date, note varchar(500), index idx (id) ) engine=innodb partition by key (order_date) partitions 4;
分区的操作:
增加分区:
可以转换分区。 exchange 把 一分区的数据传输到一张没有分区的表上。
删除分区。 注意:不能删除哈希值。key值的分区表。 语法: alter table orders_list drop partition p2 删除分区 则会删除数据。慎用。
|
|