【发布时间】:2015-11-06 19:13:55
【问题描述】:
我有一些表(表 A 和表 B),其 BIGINT 以 IDENTITY 规范作为主键。 在这些表中,我有 2 个 VARBINARY(MAX) 列。更新和删除非常罕见。
它们的行数几乎相同,表 B 少一点,但 VARBINARY(MAX) 列中的数据要多得多。
我惊讶地发现,表 B 中 PK 使用的存储量远高于表 A 中 PK 使用的存储量。 做一些阅读,如果我错了,请纠正我,澄清这与大约 8k 的最大行大小有关。因此,存在一些使用字节引用进行的分页,然后将其包含在索引中。因此,表 B 中 PK 使用的存储空间更大。它大约是数据库总大小的 30%。 我假设只有 BIGINT 是索引的一部分。
我的问题是是否有解决方法?有什么设计、技术或黑客可以防止这种情况发生吗?
问候
维尔玛
【问题讨论】:
标签: sql-server primary-key varbinarymax large-data