sql-server - 空字符串占用 SQL Server 空间?

标签 sql-server sql-server-2012

在 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/

相关文章:

java - 无法建立与 jdbc 的连接 :sqlserver in Netbeans AND MMC could not create snap-in in SSCM

sql-server - 根据 SQL Server 中的日期和规则识别记录子集

sql - 单个 SQL Server 2012 数据库可以容纳多少个表?

sql - 在 CTE 中声明变量 SQL Server 2008

sql - 你能从 SQL Server 2012 复制到 2008 R2

c++ - 未声明的标识符 SQL_SS_TABLE

visual-studio-2012 - VS 2012 Express 和 SQL Server 2012 Express 的正确安装顺序

sql-server - SQL Server 支持哪个版本的 .NET 框架?

sql-server - 如何使用 sqlpackage 从 onprem 提取 bacpac 并将其直接发送到 azure 存储帐户?

c# - asp.net Ado 存储过程字段