Certas declarações de ALTER TABLE
sempre produzirão uma reconstrução temida como você descreve.
No caso de remover os campos AUTO_INCREMENT
, a única maneira de evitar isso é alguma invasão não suportada. Isso envolve a modificação de uma cópia do arquivo .frm
da tabela. Funciona porque as informações do esquema são mantidas separadamente das informações de dados e índice e as modificações não produzem inconsistências entre as três.
Você pode encontrar uma discussão sobre isso em mysqlperformanceblog.org e no Livro MySQL de Alto Desempenho . É importante ressaltar que não é suportado. Eu recomendo que você teste ambos os métodos (simples ALTER TABLE
e .frm
edição) em uma cópia dos dados primeiro. Veja quanto tempo os dois processos demoram e verifique a consistência depois.
Editar: Desculpe, reli o que estava escrito e ALTER COLUMN
não se aplica ao que você está fazendo. Eu atualizei o texto acima.