【发布时间】:2017-07-19 23:36:51
【问题描述】:
我有一个必须添加一列的大表(数十万条记录)。该列仅存储布尔值(tinyint 0/1)。
目标是避免对已经存在的记录使用额外的存储空间,因为它们默认为 NULL/0,将来可以设置为 1,但不是全部,当然也不是一次全部。
那么 NULL 会占用一些存储空间吗?或者添加一个可以为 NULL 的列是否会将任何物理数据添加到现有行?
【问题讨论】:
-
您使用什么存储引擎和行格式?您可以通过查询 information_schema 来检查这一点:
select engine, row_format from information_schema.tables where table_schema = 'your_schema' and table_name = 'your_table'; -
@IkeWalker MyISAM,动态(我无法影响这些设置)
-
为存储新描述的列创建新表是最好的方法(据我所知!)并与大表连接以供使用。这是我在回答中提到的某个人提出的。 @jave.web
标签: mysql alter-table tablecolumn disk-access