私は自分のテーブルでこれを実行したい:
ALTER TABLE table_name MODIFY col_name VARCHAR(255)
しかし、私のテーブルは巨大で、65M (6500 万) を超える行があります。実行すると、このコマンドの実行に 50 分近くかかります。テーブルを変更するより良い方法はありますか?
さて、あなたは必要です
ALTER TABLE table_name CHANGE col_name new_name VARCHAR(255)
しかし、あなたは正しいです、変更を加えるには時間がかかります。MySQLでテーブルを変更するより速い方法は実際にはありません。
変更中のダウンタイムについて懸念がありますか?その場合、考えられるアプローチは次のとおりです。テーブルを新しいテーブルにコピーし、コピーの列名を変更してから、コピーの名前を変更します。
実動システムでテーブルの列名を定期的に変更することはお勧めできません。
percona ツールキットを使用する別のバリアント https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html
Oak を使用すると、ダウンタイムなしでスキーマの変更に対応できます。
oak-online-alter-tableは元のテーブルのスキーマをコピーし、変更を適用してからデータをコピーします。操作中にデータが失われないように、オークが元のテーブルにいくつかのトリガーを配置するため、CRUD 操作を引き続き呼び出すことができます。
オークの作者がこのメカニズムについて詳細な説明を提供し、他のツールも提案している他の質問を参照してください。