减少mysql中的列大小和数据类型

db1*_*101 4 mysql

我有一个 mysql 表 adv(id(TEXT),index(TEXT) ) 我需要对其进行如下更改

ALTER TABLE adv
  MODIFY COLUMN id VARCHAR(80),
  MODIFY COLUMN index INT(11);
Run Code Online (Sandbox Code Playgroud)

假设 id 少于 80 个字符,索引少于 80 个字符,这是否会保留上述列中的所有数据?

tom*_*bom 5

是的,它会。当桌子上没有负载时,我建议遵循以下步骤。您不仅可以仔细检查一切是否正常,而且可能会更快。

CREATE TABLE new_adv LIKE adv;

ALTER TABLE new_adv
  MODIFY COLUMN id VARCHAR(80),
  MODIFY COLUMN index INT(11);

INSERT INTO new_adv SELECT * FROM adv;

RENAME adv TO old_adv, new_adv TO adv;
/*when everything is okay...*/
DROP TABLE old_adv;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,最好不要使用index列名称等关键字。您可能也想改变这一点。如果只是为了在使用此列时不必一直使用反引号的话。