mysql 表分区创建sql_创建分区表-keyboardClicker-51CTO博客

1.使用navicat从sqlserver向MySQL中导入部分数据

select count (1) from ar_detail

061e530da1b0d494fcd957867f12f7d7.png

2.检查导入表的建表语句

show create table ar_detail

PRIMARY KEY (`Auto_ID`),

KEY `Ar_Detail_ibvid_ind` (`iBVid`),

KEY `Ar_Detail_iflag_ind` (`iFlag`),

KEY `Ar_Detail_SY` (`cProcStyle`,`cexch_name`,`cFlag`),

KEY `Ar_cPZID` (`cPZid`),

KEY `Ar_iClosesID` (`iClosesID`),

KEY `Ar_iCoClosesID` (`iCoClosesID`),

KEY `idx_Operator_Ar_Detail` (`cOperator`),

KEY `INDEX_Ar_Detail_cCoVouchID` (`cCoVouchType`,`cCoVouchID`),

KEY `INDEX_Ar_Detail_cVouchID` (`cVouchType`,`cVouchID`),

KEY `INDEX_Ar_Detail_HX` (`cDwCode`,`cexch_name`,`cCoVouchType`),

KEY `INDEX_Ar_Detail_HXZD` (`cProcStyle`,`cCancelNo`,`cFlag`),

KEY `IX_ar_detail_Mx_MIX1` (`cFlag`,`iFlag`,`cDwCode`,`dCreditStart`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4

3.将表引擎改为innodb

alter table ar_detail engine=innodb

mysql> alter table ar_detail engine=innodb;

Query OK, 103606 rows affected (1 min 42.65 sec)

Records: 103606  Duplicates: 0  Warnings: 0

检查一下:

show create table ar_detail

5e5b958ab885093b6bfe8807e755a2b5.png

修改完成

4.创建分区表

因为要测试按日期分表,接下来要对ar_detail进行dvouchdate中日期按年分区

9f1b1f40b81d6b23f14226df4e076ad0.png

1~创建同模式但按年分区的空表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您解答这个问题。 MySQL分区表可以提高查询性能,并且可以通过按时间范围进行自动分区,以便更好地管理和维护数据。下面是按天执行分区表SQL的步骤: 1. 创建分区表 您可以使用以下命令创建一个按天分区: ``` CREATE TABLE mytable ( id INT NOT NULL, created_at TIMESTAMP NOT NULL ) PARTITION BY RANGE(TO_DAYS(created_at)) ( PARTITION p0 VALUES LESS THAN (TO_DAYS('2022-01-01')), PARTITION p1 VALUES LESS THAN (TO_DAYS('2022-01-02')), PARTITION p2 VALUES LESS THAN (TO_DAYS('2022-01-03')), ... PARTITION pn VALUES LESS THAN MAXVALUE ); ``` 这将创建一个名为“mytable”的分区表,其中“created_at”列将用于分区分区将按天进行。您需要为每个分区指定值范围,例如“p0”分区包含所有在“2022-01-01”之前创建的记录。 2. 创建分区维护事件 您可以创建一个事件,定期检查创建新的分区。以下是一个示例事件: ``` CREATE EVENT partition_maintenance ON SCHEDULE EVERY 1 DAY DO ALTER TABLE mytable ADD PARTITION ( PARTITION pmax VALUES LESS THAN MAXVALUE ); ``` 这将创建一个名为“partition_maintenance”的事件,每天运行一次,它将在“mytable”创建一个新的分区。 3. 自动分区 您可以在中插入数据时自动创建分区。以下是一个示例触发器: ``` CREATE TRIGGER partition_insert BEFORE INSERT ON mytable FOR EACH ROW BEGIN DECLARE partition_name VARCHAR(20); SET partition_name = CONCAT('p', DATE_FORMAT(NEW.created_at, '%Y%m%d')); SET @partition_sql = CONCAT('PARTITION ', partition_name, ' VALUES LESS THAN (TO_DAYS(\'', DATE_ADD(DATE(NEW.created_at), INTERVAL 1 DAY), '\'))'); SET @sql = CONCAT('ALTER TABLE mytable ADD ', @partition_sql); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END; ``` 这将创建一个名为“partition_insert”的触发器,在插入新记录时自动创建新的分区。该触发器将使用新记录的“created_at”值计算分区名称,并为该名称创建一个新的分区。 总之,以上是按天执行分区表SQL的步骤,希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值