我有一个包含约2000万行的MyISAM表,需要增加varchar的最大大小。无论我如何表达ALTER TABLE查询,它都需要永远,因为MySQL将所有数据复制到临时表,重新索引它等等 - 它似乎认为数据需要转换。既然它已经是varchar了,我原以为它不需要做任何这个。
有没有办法强制MySQL增加varchar的最大长度而不经历这个非常缓慢和痛苦的过程?我理想地寻找可以完全使用SQL完成的东西,所以没有涉及复制.frm文件的技巧等。
答案 0 :(得分:1)
另一种选择是
填充表格的新版本:
INSERT INTO new_table
SELECT * FROM old_table
通过更新应用程序以使用指向old_table的视图直到new_table准备好,可以最小化步骤4。然后刷新视图,将其设置为使用new_table
...