1. 创建一个表t_part,同时为该表创建两个分区p0,p1。
CREATE TABLE t_part(
id INT
) ENGINE INNODB
PARTITION BY RANGE(id)(
PARTITION p0 VALUES LESS THAN(10),
PARTITION p1 VALUES LESS THAN(20)
);
2. 为该表添加3条数据。
INSERT INTO t_part SELECT 9;
INSERT INTO t_part SELECT 10;
INSERT INTO t_part SELECT 15;
3. 添加好之后,分区表中p0存储1条数据:id=9,p1存储2条数据:id=10,id=15。
查看分区表情况:
SELECT a.TABLE_ROWS, a.* FROM information_schema.PARTITIONS a
WHERE a.TABLE_SCHEMA=database() AND a.TABLE_NAME='t_part';
结果正确,如图:
4.给t_part追加一个分区p2,存储id大于20的数据。
ALTER TABLE t_part ADD PARTITION( PARTITION p2 VALUES LESS THAN MAXVALUE).
然后查看分区表情况:
SELECT a.TABLE_ROWS, a.* FROM information_schema.PARTITIONS a
WHERE a.TABLE_SCHEMA=database() AND a.TABLE_NAME='t_part';
结果如图:少了一条数据
不知道p0为什么会少id=9这一条数据?有无大神解释下
数据并没有少,你可以执行一下 select * from t_part partition (p0);
更新统计信息 analyze table t_part;