Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql nvarchar占用的空间总是varchar的两倍吗?_Sql_Database - Fatal编程技术网

Sql nvarchar占用的空间总是varchar的两倍吗?

Sql nvarchar占用的空间总是varchar的两倍吗?,sql,database,Sql,Database,Nvarchar用于存储用于存储多语言数据的unicode数据。如果不存储unicode,它还会占用相同的空间吗?某种程度上。并非所有unicode字符都使用两个字节。例如,Utf-8在很多时候仍然是每个字符一个字节,但很少需要每个字符4个字节。nvarchar将为每个字符分配两个字节。是 看 NCHAR: 存储大小是n字节的两倍。 NVARCHAR 存储大小(以字节为单位)为2 乘以输入的字符数 +2字节 我相信独立存储的字符只会使用一种类型的编码,所以,不管存储的字符是什么,它都会占用uni

Nvarchar用于存储用于存储多语言数据的unicode数据。如果不存储unicode,它还会占用相同的空间吗?

某种程度上。并非所有unicode字符都使用两个字节。例如,Utf-8在很多时候仍然是每个字符一个字节,但很少需要每个字符4个字节。nvarchar将为每个字符分配两个字节。

NCHAR:

存储大小是n字节的两倍。

NVARCHAR

存储大小(以字节为单位)为2 乘以输入的字符数 +2字节


我相信独立存储的字符只会使用一种类型的编码,所以,不管存储的字符是什么,它都会占用unicode字符的空间。行/页压缩是如何影响这一点的<代码>选择cast(这是一个测试),如varbinary(20))给出
0x54006800690030020006900300200061002000
。原则上,我认为这些零可以很好地压缩。n(var)char列使用UCS-2,这是一种16位固定宽度编码。它将始终使用每个字符正好两个字节,即使其中一个字节全部为零。