MySQL建表按月分区

-- DROP TABLE STUDY_TEST;

-- 表按照RECORDTIME月份分区
CREATE TABLE `STUDY_TEST` (
  `id` INT(8) NOT NULL AUTO_INCREMENT,
  `callnum` VARCHAR(32) COMMENT '',
  `receivenum` VARCHAR(32) COMMENT '',
  `serialno` VARCHAR(64) COMMENT '',
  -- 默认当前时间
  `recordtime` DATETIME default now() COMMENT '',
  `locationtype` VARCHAR(64) COMMENT '',
  `callsts` VARCHAR(4) COMMENT '',
  `channelid` VARCHAR(20) NOT NULL COMMENT '',
  `chkcode` VARCHAR(1) NOT NULL COMMENT '',
  `dyfield1` VARCHAR(128) COMMENT '扩展字段1',
  `dyfield2` VARCHAR(512) COMMENT '扩展字段2',
  `dyfield3` VARCHAR(512) COMMENT '扩展字段3',
   PRIMARY KEY (`id`,`RECORDTIME`),
   KEY `IX_C_TT_SCESITMTI_RECORDTIME` (`RECORDTIME`),
   KEY `IX_C_TT_SCESITMTI_SERIALNO` (`SERIALNO`)
) AUTO_INCREMENT=10000000 COMMENT '通用APP外呼请求表'
PARTITION BY RANGE (TO_DAYS(RECORDTIME)) (

PARTITION p202201 VALUES LESS THAN (TO_DAYS('2022-02-01 00:00:00')),
PARTITION p202202 VALUES LESS THAN (TO_DAYS('2022-03-01 00:00:00')),
PARTITION p202203 VALUES LESS THAN (TO_DAYS('2022-04-01 00:00:00')),
PARTITION p202204 VALUES LESS THAN (TO_DAYS('2022-05-01 00:00:00')),
PARTITION p202205 VALUES LESS THAN (TO_DAYS('2022-06-01 00:00:00')),
PARTITION p202206 VALUES LESS THAN (TO_DAYS('2022-07-01 00:00:00')),
PARTITION p202207 VALUES LESS THAN (TO_DAYS('2022-08-01 00:00:00')),
PARTITION p202208 VALUES LESS THAN (TO_DAYS('2022-09-01 00:00:00')),
PARTITION p202209 VALUES LESS THAN (TO_DAYS('2022-10-01 00:00:00')),
PARTITION p202210 VALUES LESS THAN (TO_DAYS('2022-11-01 00:00:00')),
PARTITION p202211 VALUES LESS THAN (TO_DAYS('2022-12-01 00:00:00')),
PARTITION p202212 VALUES LESS THAN (TO_DAYS('2023-01-01 00:00:00')),

PARTITION p_others VALUES LESS THAN MAXVALUE
);

-- mysql指定分区查询
SELECT * FROM T_C_TT_SCESITMTINFO PARTITION(p202206,p202106);

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这样可以提高查询的性能。创建多字段索引可以通过以下两种方式实现: 1. 创建复合索引:复合索引是指在多个字段上创建的索引。可以使用CREATE INDEX语句MySQL提供了分区来创建复合索引。例如,下面的语句创建了一个复合索引,包含两个字段(field1和field2): ``` CREATE INDEX index_name ON table_name (表的功能,可以将大表field1, field2); ```拆分成多个小表,提高查询性能和管理效率。在建表时,可以使用以下语法来创建分区表: CREATE TABLE table_name ( column1 data 这样创建的索引将按照field1和field2的顺序进行排序,并且可以在查询中使用这两个字段进行搜索。 2._type, column2 data_type, ... ) PARTITION BY partitioning_method ( PARTITION partition_name VALUES LESS THAN (value), PARTITION partition_name VALUES LESS THAN (value 创建前缀索引:前缀索引是指只对字段的一部分进行索引。可以使用CREATE INDEX语句来创建前缀索引,), ... ); 其中,table_name是要创建的分区表的名称,column1、column2等是表的列名和数据类型。partitioning_method是分区方法,可以选择以下几种: 1. RANGE分区:按照指定的范并指定字段的前缀长度。例如,下面的语句创建了一个前缀索引,只对字段field1的前10个字符进行索引: ``` CREATE INDEX index_name ON table_name (field1(10)); ```围对数据进行分区。例如,可以按照日期范围或者数值范围进行分区。 2. LIST分区:按照指定的值列表对数据进行分区。 这样创建的索引只会对字段的前10个字符进行排序,并且可以在查询中使用这个字段的前缀进行搜索。 需要注意的是,例如,可以按照地区或者部门进行分区。 3. HASH分区:根据列值的哈希值进行分区。例如,可以根据用户ID的哈希值进行分创建多字段索引可能会增加索引的大小和维护成本。因此,在创建多字段索引时,需要根据实际情况权衡性能和资源消耗。区。 4. KEY分区:类似于HASH分区,但是是根据列值的键值进行分区。 在PARTITION子句中, 可以使用VALUES LESS THAN来指定每个分区的取值范围。例如,VALUES LESS THAN (value)表示该分区存储小于value的数据。 以下是一个示例的分区表创建语句: CREATE TABLE sales ( id INT, sale_date DATE, amount DECIMAL(10,2) ) PARTITION BY RANGE (YEAR(sale_date)) ( PARTITION p0 VALUES LESS THAN (2010), PARTITION p1 VALUES LESS THAN (2015), PARTITION p2 VALUES LESS THAN (2020), PARTITION p3 VALUES LESS THAN MAXVALUE ); 上述语句创建了一个名为sales的分区表,按照sale_date列的年份进行分区。其中,p0存储2010年之前的数据,p1存储2010年到2014年的数据,p2存储2015年到2019年的数据,p3存储2020年及以后的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值