2

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

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

4

2 回答 2

5

你知道你不能索引 nvarchar(max) 类型的列吗?因此,您将无法优化此列上的查询。同意,没有尺寸影响,但肯定会产生潜在的性能影响。

另请注意,在特定大小之后,列存储在行外,因此获取它会增加额外的性能命中。

如果您担心在插入时出错,一般的解决方案是:

  1. 验证客户端
  2. 修剪字符串

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

于 2013-02-15T10:58:07.333 回答
2

它不会节省空间,因为nvarchar字段的大小取决于输入数据的大小,而不是字段定义。根据文档

存储大小(以字节为单位)是输入数据实际长度的两倍 + 2 个字节

您设置大小限制的原因是验证数据是否为该大小或更小,因为这是您的逻辑数据模型规定的。

于 2013-02-15T10:48:24.047 回答