SPARSE是实现SQL列联合的最佳方式吗



我们有一个表,其中有19个可为null的列,其中每个记录上只有一列被分配了非null值,有点像C并集。这是使用SPARSE的理想情况吗?还有更好的选择吗?每一列都是一个(整数)外键,所以我认为我们不想尝试将它们合并到一列中,因为我们希望与其他实体的关系得到清晰而简单的定义。

如果你想知道我们为什么要这样设计,它是用于序列号跟踪的。我们对序列号上可能发生的每一笔交易都有一条记录。我们关心的交易有19种(记录在19个不同的表中)。我们希望能够参考这些交易中的任何一笔。

根据BOL部分"按数据类型估计的空间节省",如果至少64%是NULL,则应考虑INT列的SPARSE

你有94.7%的NULL,所以在我看来你可以从中受益。不过这似乎是一个不同寻常的设计。

最新更新