日期类型的字段datetime如何分区?我想每一年的数据自动创建一个分区。
加入分区字段是 create_time,datetime类型。
支持使用时间分区的,OcenBase支持的分区类型在文档中有:OceanBase分区类型
对于采用时间分区,可以使用 Range 分区,具体的分区执行语句在官网也有:分区规则相关文档
创建分区相关文档:创建分区相关文档
试了很多办法,都失败了
稍等,我在我自己的环境测试一个sql 语句命令给您
可以参考一下
CREATE TABLE points_log
(
id
mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
nick
char(25) NOT NULL,
amount
decimal(7,4) NOT NULL,
stream_online
tinyint(1) NOT NULL,
modification_type
tinyint(3) unsigned NOT NULL,
dt
datetime NOT NULL,
PRIMARY KEY (id
,dt
,nick
),
KEY nick_idx
(nick
),
KEY amount_idx
(amount
),
KEY modification_type_idx
(modification_type
),
KEY dt_idx
(dt
),
KEY stream_online_idx
(stream_online
)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4
PARTITION BY RANGE( YEAR(dt) )
SUBPARTITION BY HASH( MONTH(dt) )
SUBPARTITIONS 12 (
PARTITION p0 VALUES LESS THAN (2014),
PARTITION p1 VALUES LESS THAN (2015),
PARTITION p2 VALUES LESS THAN (2016),
PARTITION p3 VALUES LESS THAN (2017),
PARTITION p4 VALUES LESS THAN (2018),
PARTITION p5 VALUES LESS THAN (2019),
PARTITION p6 VALUES LESS THAN (2020),
PARTITION p7 VALUES LESS THAN MAXVALUE
);
如果是 varchar类型的存放时间数据的字段做分区的话,可以用这个语法哈
举个:
create table test5(
empno varchar(20)
) partition by range columns(empno) (
PARTITION p0 VALUES LESS THAN (‘2020-00-00 00:00:00’),
PARTITION p1 VALUES LESS THAN (‘2021-00-00 00:00:00’),
PARTITION p2 VALUES LESS THAN (MAXVALUE)
);
谢谢,我这么搞也行