600GB MySQLテーブルでデータ型をINTからBIGINTに変更する必要があります。列には一意のインデックスがあります。私は無署名のINTで良いかもしれませんが、それを変更するか、BIGINTを変更することはほとんど同じ痛みだと思います。テーブルのエンジンはInnoDBです。簡単になるもの:
- 他の机
- 構造のコピーと
INSERT INTO (SELECT *)
- テーブルのダンプとダンプファイルテーブル定義の変更
- 他に何か?
更新:要求どおり、MySQLバージョン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最短時間を取ります
—
ノーム
MySQLのどのバージョンですか?いくつかのバージョンが持っているようにそれは重要
—
ypercubeᵀᴹ
ALTER TABLE ONLINE
です。この列を参照する外部キーはありますか?SHOW CREATE TABLE tablename;
出力を表示すると役立ちます。
短いフィールド名がテーブルサイズの削減に役立つ場合、600 MBになります。
—
すべての取引のジョン