额外列的成本是多少

时间:2016-06-23 05:11:16

标签: mysql

我的表fields只有3列:owner_id INT, value VARCHAR(255), type INT。计划此表将存储大量数据。

我需要添加列来存储长度很长的值(TEXT)。我看到了两种方式。

  • 使用TEXT类型向此表添加新列。
  • 添加如下新表:CREATE TABLE field_contents(field_id INT, content TEXT)

有什么更好的方法?额外TEXT列的成本(驱动器空间,内存,CPU)是多少,如果99%它将为空?

2 个答案:

答案 0 :(得分:3)

至少从存储的角度来看,我没有看到将content列添加到原始fields表的任何问题。 MySQL中可变长度列中的NULL值不占用行本身的任何空间。由于TEXTBLOB类型且长度可变,因此表中的空条目不应成为存储的性能杀手。

关于content列在逻辑上是否属于fields表本身取决于您的数据库设计。

阅读here了解详情。

答案 1 :(得分:0)

如果您真的需要进行此修改

ALTER TABLE fields DROP COLUMN old_column
ALTER TABLE fields ADD COLUMN content TEXT

添加新字段并删除未使用的字段肯定比添加新表更好,至少可以管理您的BD结构。