如果您设置字段,not null
因为它将占用MyISAM中较少的空间.
将其设置为接受null
将使其在MyISAM中占用更多空间.
在InnoDB中,null
值占用的空间更少,因此它可能在那里工作.
如果你使用blob字段,MySQL无论如何都会将它存储在不同的文件中.
或者(我的建议)
另一个选择是不将字段添加到此表但是要这样做
table extra_data
id integer primary key
big_table_id integer
large_data_seldom_used varchar(65000)
Run Code Online (Sandbox Code Playgroud)
如果您需要选择额外数据,请执行以下操作:
SELECT large_data_seldom_used FROM bigtable b
INNER JOIN extra_data e ON (e.big_table_id = b.id)
Run Code Online (Sandbox Code Playgroud)
这样您就不必在bigtable中添加额外的字段,如果extra_field很少使用,则可以节省大量空间.
有关存储要求的MySQL手册章节对此进行了讨论.没有简单的答案; 它取决于列的数据类型,列是否被索引; 和存储引擎.对列使用NULL的影响可以从无到有几个字节变化(取决于其他列也可以为NULL).
将列声明为接受NULL以及实际存储NULL值的存储影响可能很小.具有大量NULL值的列通常表示需要(进一步)标准化.
基本规则是,根据数据的属性设计架构,而不是基于存储影响.只有在结果出现问题时才能解决问题.
归档时间: |
|
查看次数: |
10164 次 |
最近记录: |