为什么 SQL Server 给我的列是我请求大小的两倍?

Alp*_*pha 3 sql-server azure

CREATE TABLE对临时表执行 a 后,我正在验证该字段的大小是否适合我需要使用的大小。

令我惊讶的是,SQL Server (Azure SQL) 报告该表的大小现在增加了一倍。为什么是这样?

这是我按顺序执行的:

CREATE TABLE #A ( Name NVARCHAR(500) not null ) 
EXEC tempdb..sp_help '#A'
Run Code Online (Sandbox Code Playgroud)

尺寸翻倍

Kan*_*amy 5

NVARCHAR 显示每个字符 2 个字节。所以如果大小为500,则显示大小为1000。它是存储unicode格式的数据。


mar*_*c_s 5

NVARCHARSQL Server 中的列总是用 2 个字节存储每个字符。

因此,如果您要求 500 个字符(每个字符为 2 个字节),显然这会导致列大小为 1000 个字节。

在 SQL Server 中永远都是这样 - 这不是新的或 Azure 特定的。