MySQL8表分区可以按照范围进行分区,范围可选表达式的值应连续,使用 PARTITION BY RANGE 定义。
在线示例:p1分区1-9,p2分区10-99,p3分区大于100。
CREATE TABLE tb_name ( try8_id INT NOT NULL ) PARTITION BY RANGE (try8_id) ( PARTITION p1 VALUES LESS THAN (10), PARTITION p2 VALUES LESS THAN (100), PARTITION p3 VALUES LESS THAN MAXVALUE );
MySQL8表分区可以按照列表进行分区,每一个列表分区基于一组值,使用 PARTITION BY LIST 定义。
在线示例:p1分区(1,2,3,4,5),p2分区(6,7,8,9,10)。
CREATE TABLE tb_name ( try8_id INT ) PARTITION BY LIST(try8_id) ( PARTITION p1 VALUES IN (1,2,3,4,5), PARTITION p2 VALUES IN (6,7,8,9,10) );
范围列分区类似于范围分区,使您能够基于多个列值的范围来分区,使用 PARTITION BY RANGE COLUMNS 定义。
在线示例:p1分区a取值1-4、b取值1-9,p2分区a>=5、b>=10。
CREATE TABLE tb_name ( a INT, b INT ) PARTITION BY RANGE COLUMNS(a, b) ( PARTITION p1 VALUES LESS THAN (5, 10), PARTITION p2 VALUES LESS THAN (MAXVALUE, MAXVALUE) );
列表列分区类似于列表分区,使您能够基于多个列值的列表来分区,使用 PARTITION BY LIST COLUMNS 定义。
在线示例:p1分区、p2分区取值如下。
CREATE TABLE tb_name ( try8_name VARCHAR(45) ) PARTITION BY LIST COLUMNS(try8_name) ( PARTITION p1 VALUES IN('北京', '上海', '广州', '深圳'), PARTITION p2 VALUES IN('城市001', '城市002', '城市003', '城市004') );
MySQL8表分区可以按照哈希值分区,用于确保数据在预定数量的分区之间均匀分布,使用 PARTITION BY HASH 定义。
在线示例:使用 3 个分区如下。
CREATE TABLE tb_name ( id INT NOT NULL, try8_id INT ) PARTITION BY HASH(try8_id) PARTITIONS 3;
MySQL8 表分区可以按照主键/唯一键分区,用于确保数据在预定数量的分区之间均匀分布,使用 PARTITION BY KEY 定义。
在线示例:使用 3 个分区如下。
CREATE TABLE tb_name ( try8_id INT NOT NULL PRIMARY KEY ) PARTITION BY KEY() PARTITIONS 3;
MySQL8表分区可以按照复合分区,即分区表内进一步分区,也称为:子分区。
在线示例:总计 6 个复合子分区如下。
CREATE TABLE tb_name (try8_id INT, try8_date DATE) PARTITION BY RANGE( YEAR(try8_date) ) SUBPARTITION BY HASH( TO_DAYS(try8_date) ) SUBPARTITIONS 2 ( PARTITION p1 VALUES LESS THAN (2000), PARTITION p2 VALUES LESS THAN (2020), PARTITION p3 VALUES LESS THAN MAXVALUE );
小提示:试试吧全栈教程之MySQL8教程,主打原创,定期更新,全部免费,欢迎收藏学习和转载分享。