sql-server-2012 - 关于使用 NVARCHAR(MAX)

标签 sql-server-2012

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

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

最佳答案

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

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

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

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

这里有一个问题在更多 detail 中对此进行了讨论.

关于sql-server-2012 - 关于使用 NVARCHAR(MAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892968/

相关文章:

database - 在线重建索引

sql - 在 SQL Server 中将不同的列转换为行

c# - 如何从发布在同一 EC2 服务器上的 ASP.NET 网站访问 EC2 服务器上的 SQL Server 2012?

sql-server - 在 VB.NET 中检索 UDT 表结构

sql-server - 在 SQL Server 的 where 子句中使用函数 (IS_MEMBER ) 时出现基数估计警告

sql - 在没有唯一标识符且不使用 ORDER BY 的情况下获取表中的最后一行

sql - TSQL 插入错误 - 字符串或二进制数据将被截断

sql - 从使用(WHERE)条件选择的行中获取上一行和下一行

c# - SQL 服务器 CLR : how to call WCF Service In CLR SQL stored procedure in database project

sql - 降低查询计划中表值函数 - XML Reader 的成本 - 如何?