VarChar(MAX)的最大行大小

时间:2011-09-07 16:28:49

标签: sql-server database sql-server-2008-r2

我正在使用SQL Server 2008 R2。

我知道如果我有一个包含10个varchar(1000)列的表,并且我实际上在每个列中放置了1000个字符并尝试INSERT该行,由于SQL Server的行限制为8K,我将收到错误。但是,如果这些列定义为varchar(max),我会收到错误吗?

如果没有,那么下面的场景如何: 我有8个varchar(1000)列,我最多可以在一个表上有2个varchar(max)列,其中包含一些字符。我会收到错误吗?

我认为答案是否定的,我不会在任何一种情况下都会出错,但我需要确定。

1 个答案:

答案 0 :(得分:4)

自SQL Server 2005以来,您的原始假设不正确。

varchar(1000)案例最终会将一些列存储在offrow中,因此没有理由将列中的2列声明为varchar(max)而不是varchar(1000),以避免此类不存在的问题。

由于SQL Server需要遵循从数据页到关闭行页面的指针,因此存储数据会产生性能开销,因此如果您希望这是一种常见情况,您可以考虑以某种方式垂直分区表。 / p>

相关问题