我有一个数据库,其中有很多字符串列。我应该使用 NVARCHAR(MAX) 还是将字符串限制为它们可以合理的最大值,例如 NVARCHAR(100) 等?我真正想知道的是,如果我有一列设置为 NVARCHAR(MAX),并且该列的所有值都是 100 个字符或更少,那么我是否可以通过将该列设置为 NVARCHAR(100) 来节省空间?
我知道 spac 不是这里唯一的问题,数据的“验证”也很重要,但我只是在问空间问题。
我有一个数据库,其中有很多字符串列。我应该使用 NVARCHAR(MAX) 还是将字符串限制为它们可以合理的最大值,例如 NVARCHAR(100) 等?我真正想知道的是,如果我有一列设置为 NVARCHAR(MAX),并且该列的所有值都是 100 个字符或更少,那么我是否可以通过将该列设置为 NVARCHAR(100) 来节省空间?
我知道 spac 不是这里唯一的问题,数据的“验证”也很重要,但我只是在问空间问题。
你知道你不能索引 nvarchar(max) 类型的列吗?因此,您将无法优化此列上的查询。同意,没有尺寸影响,但肯定会产生潜在的性能影响。
另请注意,在特定大小之后,列存储在行外,因此获取它会增加额外的性能命中。
如果您担心在插入时出错,一般的解决方案是:
这是一个更详细地讨论这个问题的问题。
它不会节省空间,因为nvarchar
字段的大小取决于输入数据的大小,而不是字段定义。根据文档。
存储大小(以字节为单位)是输入数据实际长度的两倍 + 2 个字节
您设置大小限制的原因是验证数据是否为该大小或更小,因为这是您的逻辑数据模型规定的。