我在InnoDB中有一个非常大的表,我想在合理范围内最小化它的大小。对于一些列,每行的值几乎总是相同的,所以我想尝试利用它。
例如,如果我有int
列(或datetime
或varchar
或其他),那么该列中的null
值实际上不会存储在磁盘上?也就是说,它是否比在每一行中存储数字1
小?
或者在int not null default 0
列中,0
会占用比1
更少的空间,甚至根本没有空间吗?
(我知道我可以在一些大桌子上尝试它,但是对于我的真实数据来说,尝试的速度很慢,并且测量数据库中的东西大小可能很挑剔,所以我想听一些人说话知识地!)
答案 0 :(得分:0)
答案 1 :(得分:0)
int是int是一个int,所以0不会占用比1更少的空间。而NULL只是一个位于同一空间的特殊值。
这听起来像是在询问稀疏列设置,其中NULLS由一个明显小于数据类型的值表示,或者根本不存储。我找不到InnoDB的任何内容,但是SQL Server 2008中有很多关于稀疏列的东西。