创建一级分区
创建HASH一级分区
使用分区函数
使用单列分区键datetime并通过分区函数to_days转换为日期天数,再进行哈希分区,同时指定分区数目为8:
CREATE TABLE tb_h_fn(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY HASH(TO_DAYS(birthday))
PARTITIONS 8;不用分区函数
使用单列分区键ID进行哈希分区,并指定分区数目为8:
CREATE TABLE tb_h(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY HASH(id)
PARTITIONS 8;使用向量分区键(id,bid)进行哈希分区,并指定分区数目为8:
说明
id与bid同时参与哈希值计算,等值查询必须同时带上id与bid等值条件,才能命中分区裁剪。
CREATE TABLE tb_h2(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY HASH(id,bid)
PARTITIONS 8;创建KEY一级分区
使用向量分区键(id,bid)按Key分区,并指定分区数目为8:
说明
點认第1个列参与哈希值计算,等值查询只须同时前缀列等值条件,即可命中分区裁剪。
CREATE TABLE tb_k(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY KEY(id, bid)
PARTITIONS 8;创建RANGE一级分区
使用分区函数
使用单列分区键datetime并通过分区函数to_days转换为日期天数,再进行范围分区:
CREATE TABLE tb_r_fn(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY RANGE(TO_DAYS(birthday))
(
PARTITION p1 VALUES LESS THAN(TO_DAYS('2020-01-01')),
PARTITION p2 VALUES LESS THAN(TO_DAYS('2021-01-01')),
PARTITION p3 VALUES LESS THAN(TO_DAYS('2022-01-01')),
PARTITION pm VALUES LESS THAN(MAXVALUE)
)不用分区函数
使用单列分区键id进行范围分区,并指定分区数目为8:
CREATE TABLE tb_r(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY RANGE(id)
(
PARTITION p1 VALUES LESS THAN(1000),
PARTITION p2 VALUES LESS THAN(2000),
PARTITION p3 VALUES LESS THAN(3000),
PARTITION pm VALUES LESS THAN(MAXVALUE)
)创建RANGE COLUMNS一级分区
使用向量分区键(birthday,id)按范围分区:
CREATE TABLE tb_rc(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY RANGE COLUMNS(birthday, id)
(
PARTITION p1 VALUES LESS THAN('2020-01-01', 1000),
PARTITION p2 VALUES LESS THAN('2021-01-01', 2000),
PARTITION p3 VALUES LESS THAN('2022-01-01', 3000),
PARTITION pm VALUES LESS THAN(MAXVALUE,MAXVALUE)
)创建LIST一级分区
使用分区函数
使用单列分区键datetime并通过分区函数to_days转换为日期天数,再进行列表分区:
CREATE TABLE tb_l_fn(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY LIST(TO_DAYS(birthday))
(
PARTITION p1 VALUES IN (TO_DAYS('2020-01-01'),TO_DAYS('2020-02-01')),
PARTITION p2 VALUES IN (TO_DAYS('2021-01-01'),TO_DAYS('2021-02-01')),
PARTITION p3 VALUES IN (TO_DAYS('2022-01-01')),
PARTITION pm VALUES IN (DEFAULT)
)不用分区函数
使用单列分区键id进行列表分区,并指定分区数目为8:
CREATE TABLE tb_l(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY LIST(id)
(
PARTITION p1 VALUES IN (1000,1001,1002),
PARTITION p2 VALUES IN (2000,2001,2002),
PARTITION p3 VALUES IN (3000),
PARTITION pm VALUES IN (DEFAULT)
)创建LIST COLUMNS一级分区
使用向量分区键(birthday,id)按列表分区:
CREATE TABLE tb_lc(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY LIST COLUMNS(birthday, id)
(
PARTITION p1 VALUES IN (('2020-01-01', 1000),('2020-01-01', 2000)),
PARTITION p2 VALUES IN (('2021-01-01', 1000),('2021-01-01', 2000)),
PARTITION p3 VALUES IN (('2022-01-01', 1000),('2022-01-01', 2000)),
PARTITION pm VALUES IN (DEFAULT)
)「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




