MySQLで、こういう定義のテーブルを、
+-------------+----------+ | Field | Type | +-------------+----------+ | id | char(4) | | insert_date | char(8) | | update_date | char(8) | +-------------+----------+
こう変更したい。
+-------------+----------+ | Field | Type | +-------------+----------+ | id | char(4) | | add_column1 | char(1) | | add_column2 | char(2) | | add_column3 | char(3) | | insert_date | char(8) | | update_date | char(8) | +-------------+----------+
カラム「id」の直後に複数のカラムを追加したい時って、ALTER TABLE文で出来たんだっけ? と思って調べた。
こんな感じで出来た。
ALTER TABLE tbl_name ADD add_column1 CHAR(1) AFTER id, ADD add_column2 CHAR(1) AFTER add_column1, ADD add_column3 CHAR(1) AFTER add_column2;
当たり前の話だけど、クエリの実行は1回にまとめてしまった方が速く済むようだ。1カラム追加ごとに毎回実行してはいけない。
環境や設定によりけりだけども、700万レコード持っててインデックスもあちこちに設定してあるテーブル定義の変更がALTER TABLE文1回なら20分程度で完了した。
最近のツッコミ
参号館 日記(ariyasacca)