我的表fields
只有3列:owner_id INT, value VARCHAR(255), type INT
。计划此表将存储大量数据。
我需要添加列来存储长度很长的值(TEXT)。我看到了两种方式。
CREATE TABLE field_contents(field_id INT, content TEXT)
。有什么更好的方法?额外TEXT列的成本(驱动器空间,内存,CPU)是多少,如果99%它将为空?
答案 0 :(得分:3)
至少从存储的角度来看,我没有看到将content
列添加到原始fields
表的任何问题。 MySQL中可变长度列中的NULL
值不占用行本身的任何空间。由于TEXT
是BLOB
类型且长度可变,因此表中的空条目不应成为存储的性能杀手。
关于content
列在逻辑上是否属于fields
表本身取决于您的数据库设计。
阅读here了解详情。
答案 1 :(得分:0)
如果您真的需要进行此修改
ALTER TABLE fields DROP COLUMN old_column
ALTER TABLE fields ADD COLUMN content TEXT
添加新字段并删除未使用的字段肯定比添加新表更好,至少可以管理您的BD结构。