关于使用NVARCHAR(MAX)

Sac*_*nth 2 sql-server-2012

我有一个数据库,其中有很多字符串列.我应该使用NVARCHAR(MAX)还是将字符串限制为合理的最大值,例如NVARCHAR(100)等?我真正想知道的是,如果我将列设置为NVARCHAR(MAX)并且该列的所有值都是100个字符或更少,那么我可以通过将该列设置为NVARCHAR(100)来节省空间吗?

我知道spac不是这里唯一的问题,数据的"验证"也很重要,但我只是在询问空间问题.

Bog*_*SFT 5

您是否知道无法索引nvarchar(max)类型的列?因此,您将无法优化此列的查询.没有规模影响,同意,但潜在的性能影响肯定.

另请注意,在一定大小后,列将存储在行外,因此获取它将添加额外的性能.

如果您担心在插入时遇到错误,通常的解决方案是:

  1. 验证客户端
  2. 修剪弦乐

这是一个更详细地讨论这个问题的问题.