是否可以在MySQL中增加varchar的最大大小而不进行转换?

时间:2010-09-22 23:57:00

标签: mysql

我有一个包含约2000万行的MyISAM表,需要增加varchar的最大大小。无论我如何表达ALTER TABLE查询,它都需要永远,因为MySQL将所有数据复制到临时表,重新索引它等等 - 它似乎认为数据需要转换。既然它已经是varchar了,我原以为它不需要做任何这个。

有没有办法强制MySQL增加varchar的最大长度而不经历这个非常缓慢和痛苦的过程?我理想地寻找可以完全使用SQL完成的东西,所以没有涉及复制.frm文件的技巧等。

1 个答案:

答案 0 :(得分:1)

另一种选择是

  1. 创建表的副本,但是使用增加的VARCHAR,您需要表。但没有指数。
  2. 填充表格的新版本:

    INSERT INTO new_table
    SELECT * FROM old_table
    
  3. 应用索引
  4. 更新应用程序引用以使用new_table
  5. 通过更新应用程序以使用指向old_table的视图直到new_table准备好,可以最小化步骤4。然后刷新视图,将其设置为使用new_table ...