我使用的是 SQL Server 2008 R2。
我知道如果我有一个包含 10 varchar(1000) 列的表,并且我实际上在每一列中放入了 1000 个字符并尝试插入该行,由于 SQL Server 的 8K 行限制,我会收到错误。但是,如果这些列被定义为 varchar(max) 我会收到错误吗?
如果不是,那么下面的场景会怎样: 我有 8 个最大的 varchar(1000) 列,另外我有 2 个 varchar(max) 列都在一张表上,其中包含一些字符。我会收到错误吗?
我认为答案是否定的,在任何一种情况下我都不会收到错误,但我需要确定。
最佳答案
自 SQL Server 2005 以来,您最初的假设是不正确的。
varchar(1000)
情况最终会导致某些列存储在行外,因此没有理由将其中 2 列声明为 varchar(max)
而不是 varchar(1000)
只是为了避免这个不存在的问题。
存储行外数据会产生性能开销,因为 SQL Server 需要遵循从数据页到行外页的指针,因此如果您预计这是常见情况,您可能会考虑以某种方式对表进行垂直分区。
关于sql-server - VarChar 的最大行大小(MAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337345/