将列属性设置为 NOT NULL 会影响表大小吗?

Art*_*sov 2 mysql

我的 MySQL 数据库表中有一堆列将布尔值(0 或 1)存储为 tinyint。它们默认为 0,并不意味着为空。我正在考虑将列属性设置为 NOT NULL 以便有另一个验证检查以防万一。我想知道它是否会以增加桌子尺寸为代价。我担心的是,也许 NOT NULL 属性会为每个数据条目添加另一位?

我的数据库是新的,几乎是空的,所以当我尝试检查表的大小时,它总是给我 16kb。

RDF*_*ozz 5

MySQL 文档(强调我的):

如果可能,将列声明为 NOT NULL。通过更好地使用索引并消除测试每个值是否为 NULL 的开销,它使 SQL 操作更快。您还可以节省一些存储空间,每列一位。如果您的表中确实需要 NULL 值,请使用它们。只需避免在每列中允许 NULL 值的默认设置。

因此,相反,NOT NULL节省了磁盘空间,而不是花费更多。