如果列为空,是否会影响该列使用的空间?
使用的空间是否由列定义固定?
这是否因数据库而异。
(我主要对 SQL Server 2000 感兴趣。)
澄清:
这个问题与列“可为空”时发生的情况无关(正如 Kritsen 和 gbn 指出的那样,这会增加一点成本)。问题是,当列实际上为空(在某些特定行中)时是否有任何保存。
...
Cadaeic 为 SQL Server 提供了答案,在 2008 版本之前,SQL Server 中似乎没有任何节省,而根据 Quassnoi 的说法,如果空列位于末尾,则可以在 Oracle 中节省成本。感谢您的回答,他们都很有帮助。
在列中存储 NULL 不会特别消耗或节省空间。对于固定长度的数据,整个空间仍然保留。
另一方面,可变长度数据只需要数据长度加上存储实际长度的开销。例如,VARCHAR(n)将使用2个字节的数据来指示实际长度,因此所需的存储空间始终为n+2。
此外,应该提到的是,如果 SET ANSI_PADDING ON,则具有 NULL 值的 char(n) 将表现为 VARCHAR(n)。
无论如何,在使用 SQL Server 2000 或 SQL Server 2005 时,您不会认识到存储 NULL 所带来的空间“节省”。SQL Server 2008 引入了稀疏列的概念,这可以为主要为 NULL 的列带来节省。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)