MySQL对已有数据的表进行分区表

本文介绍两种将现有MySQL表转换为分区表的方法:一是使用ALTERTABLE语句直接转换并自动复制数据;二是创建新的分区表,再从原表导入数据。文章详细解释了每种方法的具体步骤及资源消耗情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 可以使用ALTER TABLE来进行更改表为分区表,这个操作会创建一个分区表,然后自动进行数据copy然后删除原表。

ALTER TABLE tbl_rtdata PARTITION BY RANGE (Month(fld_date))
(   
PARTITION p_Apr VALUES LESS THAN (TO_DAYS('2012-05-01')),
PARTITION p_May VALUES LESS THAN (TO_DAYS('2012-06-01')), 
PARTITION p_Dec VALUES LESS THAN MAXVALUE );

但是,这种方法对于服务器的资源消耗比较大,所以下面还有另一种方法。

2 新建一个和原来表一样的分区表,然后把数据从原表导出,接着倒入新表。

先创建分区表,然后导出原表数据,新表名称改为原表名,然后插入。

CREATE TABLE `news` (
  `new_id` int(5) NOT NULL AUTO_INCREMENT,
  `new_title` varchar(130) NOT NULL,
  `new_type` int(2) NOT NULL,
  `new_img` varchar(100) NOT NULL,
  `new_desc` text NOT NULL,
  `new_user` varchar(100) NOT NULL,
  `add_time` varchar(13) NOT NULL,
  PRIMARY KEY (`new_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
PARTITION BY RANGE (new_id)
(PARTITION p1 VALUES LESS THAN (200) ENGINE = MyISAM,
 PARTITION p2 VALUES LESS THAN (400) ENGINE = MyISAM,
 PARTITION p3 VALUES LESS THAN (600) ENGINE = MyISAM,
 PARTITION p4 VALUES LESS THAN MAXVALUE ENGINE = MyISAM);

表建完之后,只需要吧原表的数据拷贝进新建的表中就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值