总是使用nvarchar(MAX)有什么缺点吗?

28 浏览
0 Comments

总是使用nvarchar(MAX)有什么缺点吗?

在 SQL Server 2005 中,将所有字符字段设为 nvarchar(MAX) 而不是显式指定长度(如 nvarchar(255))是否有任何缺点?(除了显然的一点,即不能在数据库层面上限制字段长度)

admin 更改状态以发布 2023年5月22日
0
0 Comments

根据接受答案提供的链接,似乎:

  1. 存储在nvarchar(MAX)字段中的100个字符与存储在nvarchar(100)字段中的100个字符没有任何区别 - 数据将内联存储,您不必担心读取和写入数据'行外'的开销。所以不用担心。

  2. 如果大小超过4000,数据会自动存储在'行外',这是您想要的。所以这里也不用担心。

然而...

  1. 您不能在nvarchar(MAX)列上创建索引。您可以使用全文索引,但无法在列上创建索引以提高查询性能。对我来说,这确切地决定了……总是使用nvarchar(MAX)是明显的不利。

结论:

如果您想在整个数据库中使用一种“通用字符串长度”,它可以被索引并且不会浪费空间和访问时间,那么您可以使用nvarchar(4000)

0
0 Comments

同一个问题在 MSDN 论坛上有人问过:

以下内容来自原始帖子(那里有更多信息):

当您将数据存储在 VARCHAR(N) 列中时,实际上它们以相同的方式物理存储。但是当您将其存储在 VARCHAR(MAX) 列中时,在屏幕背后,该数据以 TEXT 值处理。因此,在处理 VARCHAR(MAX) 值时需要进行一些额外的处理。(仅当大小超过 8000 时)

VARCHAR(MAX) 或 NVARCHAR(MAX) 被认为是“大值类型”。大值类型通常存储在“行外”。这意味着数据行将指向另一个位置,在那里存储了“大值”...

0