我需要将600GB MySQL表中的数据类型从INT更改为BIGINT。该列具有唯一索引。对于未签名的INT,我可能会很好,但是我认为更改为BIGINT或BIGINT会非常痛苦。该表的引擎是InnoDB。什么会更容易:
- 更改表
- 复制结构和
INSERT INTO (SELECT *)
- 转储表和更改转储文件表定义
- 还要别的吗?
更新:根据要求,MySQL ver 5.5.15,没有外键并创建表:
CREATE TABLE `tbl` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`tid` bigint(20) NOT NULL,
`t` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`f` tinyint(1) NOT NULL,
`i_id` bigint(20) NOT NULL,
`ir_id` int(11) NOT NULL,
`r_c` int(11) NOT NULL,
`r` tinyint(1) NOT NULL,
`e` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`t` varchar(5) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user` (`user_id`,`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=1657146169 DEFAULT CHARSET=utf8
确定疼痛,以最短的时间....?最快的结果?
@AlecTeal用最短的时间
—
Noam
哪个版本的MySQL?就像某些版本一样重要
—
ypercubeᵀᴹ
ALTER TABLE ONLINE
。您是否有外键引用此列?如果您显示SHOW CREATE TABLE tablename;
输出,它将有所帮助。
如果短字段名有助于减小表大小,则将为600 MB。
—
所有行业的乔恩(Jon of All Trades)2013年