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