在 SQL Server 2012 及更高版本中,varchar
类型占用的空间有何损失?也就是说,如果我有 3 个类型为 nvarchar
(或 varchar
)的列,并且它们都是空的,那么表中占用了多少空间?
CREATE TABLE dbo.ReferringUrl
(
Id int IDENTITY(1, 1) NOT NULL,
RequestUrl nvarchar(384) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
ReferringUrlName nvarchar(384) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
ReferringIpAddress nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
)
最佳答案
非空 varchar(n) 值需要 2 个字节的长度加上每个字符 1 个字节。 nvarchar(n) 每个字符需要 2 个字节。零长度字符串对于 varchar 和 nvarchar 都只需要 2 个字节,2 个字节用于长度加上零字节用于值。 NULL 值根本不需要空间,因为空位图中的相应位指示该值为空并且没有存储长度或值。
启用页面压缩后,空间要求会有所不同。在这种情况下,空间需求取决于前缀和字典压缩。
关于sql-server - 空字符串占用 SQL Server 空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381088/