我有一个数据库,其中有很多字符串列。我应该使用 NVARCHAR(MAX) 还是将字符串限制为它们可以合理地达到的最大值,例如 NVARCHAR(100) 等?我真正想知道的是,如果我将一列设置为 NVARCHAR(MAX) 并且该列的所有值都是 100 个字符或更少,那么我是否可以通过将该列设置为 NVARCHAR(100) 来节省空间?
我知道 spac 不是这里唯一的问题,数据的“验证”也很重要,但我只是问空间问题。
最佳答案
你知道你不能索引类型为 nvarchar(max) 的列吗?因此您将无法优化此列上的查询。同意,没有大小影响,但肯定有潜在的性能影响。
另请注意,在达到一定大小后,列存储在行外,因此获取它会增加额外的性能命中。
如果你担心在插入时出错,一般的解决方案是:
- 验证客户端
- 修剪字符串
这里有一个问题在更多 detail 中对此进行了讨论.
关于sql-server-2012 - 关于使用 NVARCHAR(MAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892968/