range分区
range方式创建分区语句如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #根据表结构中的时间字段来作为分区键,如下的year()方法,或者to_char()方法 create table table_range( id int ( 11 ), amt int ( 11 ) unsigned not null , created_on datetime )partition by range(year(created_on))( partition p2018 values less than ( 2018 ), partition p2019 values less than ( 2019 ), partition p2020 values less than ( 2020 ) partition pdefault values less than maxvalue #MAXVALUE 表示最大的可能的整数值 ); #或者使用id作为范围分区 create table table_range( id int ( 11 ), amt int ( 11 ) unsigned not null , created_on datetime )partition by range(id)( partition p10000 values less than ( 10000 ), partition p20000 values less than ( 20000 ), partition p30000 values less than ( 30000 ) partition pdefault values less than maxvalue #MAXVALUE 表示最大的可能的整数值 ); |
list分区
1 2 3 4 5 6 7 | create table table_list( id int ( 11 ), type int ( 4 ) )(partition by list (type) partition p0 values in ( 1 , 3 , 5 , 7 , 9 ), partition p1 values in ( 2 , 4 , 6 , 8 , 0 ) ); |
hash分区
1 2 3 4 5 6 7 | CREATE TABLE table_hash( id INT NOT NULL, name VARCHAR( 30 ), id_card INT ) PARTITION BY HASH(id_card) PARTITIONS 4 ; |
key分区
类似hash分区,只不过key分区不能自定义hash规则,只能使用mysql的方法。
1 2 3 4 5 6 7 | CREATE TABLE table_key ( id INT NOT NULL, name CHAR( 5 ), date DATE ) PARTITION BY LINEAR KEY (id) PARTITIONS 3 ; |