sql-server - VarChar 的最大行大小(MAX)

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

我使用的是 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/

相关文章:

c# - SQL Server 数据库密码

database - 我应该相信自动生成的数据库比较脚本吗?

sql - 使用查询sql连接3个表

c# - 在 LAN 系统上生成备份和还原 SQL 数据库

SQL Server 查询进行空控制

sql - (子)类别的表和 Ruby ActiveRecord 类设计

具有唯一值的 SQL Server COUNT 查询

sql-server - 在 Reporting Services 报表中隐藏页面滚动控件

sql-server - 在 SQL Server 中将日期从 dd-mm-yyyy 转换为 yyyy-mm-dd

sql - 如何估计 SQL Server 表中插入的单行的理论大小