回答

1

您应该为每个要限制长度的属性定义最大长度。请注意,nvarchar(max)数据类型与nvarchar(n)数据类型不同,其中n是1-4000的数字。当您定义没有最大长度时,您获得的max版本适用于大型文本块,如段落等。它可以处理非常大的长度,因此数据将与记录的其余字段分开存储。另一方面,nvarchar(n)与其余行保持内联。

这可能是最好的了,现在就设置这些值,而不是等到稍后再做。选择和你需要的一样大的值,所以你永远不必增加它们。 nvarchar(n)高效地存储其信息;例如,nvarchar(200)不一定占用200个字符的空间;它只使用足够的空间来存储实际放入的内容,并且还需要额外的几个字节来保存其长度。

因此,只要有可能,您应该对实体的文本字段设置限制。

+0

据我所知,重要的推论是nvarchar(max)由于其不同而不能用作关键字。所以任何可能是关键的东西都需要不同的价值。 – glenatron 2012-09-18 15:08:00

0

NVARCHAR - 是可变长度字段。所以它只消耗你需要的空间。另一方面,NCHAR按照NVARCHAR的要求分配所需的所有空间。 MSDN建议在列数据条目的大小可能差异很大时使用nvarchar。 在项目的早期阶段,这是我走的路。您可以在需要时调整它。

+0

nvarchar(#)和nvarchar(max)之间存在非常大的差异。前者是你正在谈论的领域。后者是一个不同的野兽,更像旧的文字。 – 2012-04-27 02:33:28

0

根据下一个博客post在实际值大小未达到4000个符号(因为限制为8K,并且每个字符使用两个字节)之前,nvarchar(max)与ntext不同。只要它达到这个尺寸,它的行为几乎与ntext相同。至于我,我没有看到有任何理由避免使用nvarchar(max)数据类型。

相关问题