range分区基本操作

1,建立分区表

CREATE TABLE `user_tb` (
  `Uid` int(20) NOT NULL AUTO_INCREMENT,
  `head` text,
  `wxAcount` varchar(20) DEFAULT NULL,
  `wxName` varchar(16) DEFAULT NULL,
  `zfbAcount` varchar(30) DEFAULT NULL,
  `zfbName` varchar(30) DEFAULT NULL,
  `tel` varchar(20) DEFAULT NULL,
  `orderNum` int(11) DEFAULT NULL,
  `note` mediumtext,
  PRIMARY KEY (`Uid`),
  KEY `orderNum` (`orderNum`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


PARTITION by RANGE(Uid)(
	PARTITION p1 VALUES less than(1000999),
  PARTITION p2 VALUES less than(1001999),
  PARTITION p3 VALUES less than(1002999)
);

注意:create语句后没有分号,直到分区语句结束之后才有分号

2,查看分区信息

select
partition_name part,
partition_expression expr,
partition_description descr,
table_rows
from information_schema.partitions where
table_schema = schema()
and table_name='user_tb';

3, 为每个分区添加数据(调用之前的inster_111(),存储过程:call insert_llll(1000000,2998);)

注意:当插入的数据不在分区内时,插入语句将被无效

4,增加一个分区p4(ALTER TABLE user_tb add partition(partition p4 values less than (1003999));)

扫描二维码关注公众号,回复: 5994338 查看本文章

5,删除一个分区(alter table user_tb drop partition p2;

6,查询p3中数据

7,explain语句

由于是估算所以显示的分区并不正确,但可以看到在执行语句时使用了的type为range

8,向新建的p4插入一条数据

insert into user_tb (head,wxAcount,wxName,zfbAcount,zfbName,tel,note) values (
	substring(MD5(RAND()),1, RAND()*10), 1, 1, 1, 1, 1,
	00000);

 

9,合并p3,p4分区

ALTER TABLE user_tb REORGANIZE PARTITION p3,p4 INTO(
PARTITION p3 VALUES LESS THAN (1003999)
);

猜你喜欢

转载自blog.csdn.net/qq_41650131/article/details/89397863
今日推荐