在存储字符串(例如名字)时,最好使用哪种数据类型?我看到过varchar和nvarchar都被使用过。哪一个更好?这有关系吗?
我也听说过最好的长度是255,但我不知道为什么。有没有特定的字符串长度是首选的?
在存储字符串(例如名字)时,最好使用哪种数据类型?我看到过varchar和nvarchar都被使用过。哪一个更好?这有关系吗?
我也听说过最好的长度是255,但我不知道为什么。有没有特定的字符串长度是首选的?
nvarchar 存储 Unicode 字符数据,如果您计划存储非英语名称,则必须使用 nvarchar。如果是 Web 应用程序,即使您不打算国际化,我强烈建议使用 nvarchar。缺点是它会消耗两倍的空间,nvarchar每个字符占用16位,而varchar每个字符占用8位。
nchar
/nvarchar
。如果不需要,则可以使用char
/varchar
以节省空间。我也听说过最好使用255个字符长度,但我不知道为什么。
参见为什么我们经常看到VARCHAR(255)(而不是其他长度)?
是否有特定的字符串长度被推荐使用?
如果您的数据有明确定义的最大限制(例如VIN的17个字符),则请使用该限制长度。
另一方面,如果限制是任意的,则选择一个较大的最大大小以避免拒绝有效数据。在SQL Server中,您可能需要考虑索引键的900字节最大大小。
nvarchar 意味着您可以在其中保存 Unicode 字符。nvarchar 类型有 2GB 的限制。如果字段长度超过 4000 个字符,则会使用溢出页。较小的字段意味着一个页面可以容纳更多行,从而提高查询性能。
通常,对于小字符串,请使用支持Unicode字符的nvarchar(n)
。当与行或页面压缩一起使用时(至少其中之一通常是理想的),该字符串将被compressed。
大字符串需要nvarchar(max)
,它不支持Unicode压缩。
对于特殊情况,当您的数据集从不使用Unicode字符时,varchar(n)
和varchar(max)
限制每个字符的字符串类型为1个字节。
如果您知道最大长度(n
)小于256,则SQL Server仅需要使用1个字节来存储字符串长度。与最大长度略大于255的字符串类型相比,这将减少约半个百分点的存储空间。