首页 > 解决方案 > 在列数相等的表上应用 UNION 时出现“无法创建行...大于允许的最大行大小”错误

问题描述

我正在尝试合并 5 个表。它们每个都有相同数量的列(300+)。我可以愉快地单独加载每个表。

错误是

无法创建大于允许的最大行大小 8060 的大小为 8161 的行。

这是不言自明的 - 整行组合(300 多列)在内存中太大。

我很困惑桌子最初是如何制作的,以及如何期望我联合起来?联合不会增加行大小,只会增加行数,如果可以单独选择联合,那么联合如何触发这一点很困惑。

有没有办法抑制这种限制?

谢谢!

标签: sqlsql-servertsqlunion

解决方案


类型转换可以改变单个列的大小。查询不需要union所有列都具有完全相同的类型,因此它允许进行一些隐式转换。

例如,这个:

select convert(tinyint, 1)
union all
select convert(int, 102345678)

返回和整数 - 与tinyint. 对于日期和日期时间,甚至对于国家字符集,这很容易发生。


推荐阅读