SQL查询性能:少行宽表格还是多行窄表格?

3
我希望在星型模式中对事实表进行查询。
我需要为其他几个值的组合(即PK)捕获许多值,例如总销售额、净销售额、区域销售额等。
我有两个选择:
1.一个带有PK和许多列的行,其中包括总销售额、区域销售额等度量。
2.将度量作为维度,因此PK会更大-行中会添加列度量。除PK外只有一个值。因此,我将一个带有许多度量的行分解为许多只有一个度量的行。
哪个方案更适合性能,包括插入和选择?
2个回答

3
如果你有一个包含所有值的单行,假设你同时进行插入/更新和读取操作,那么你将会遇到争用问题。
拥有一个单一的宽表也意味着在未来添加新度量值更加困难 - 这需要改变表结构,这将锁定表并导致其他问题。
除非你在同一查询中为相同的PK检索多个值,否则你的SELECT性能应该是相似的,在这种情况下,较宽的表可能会稍微快一些。

2
我认为争用不会成为问题,因为我假设John正在谈论创建DW。 - Maess
@Maess - 根据设置,构建过程仍可能存在争用,但是是的,你说得对,听起来像是仓库。 - JNK
是的,我正在创建一个数据仓库,并希望找到最佳解决方案以实现良好的性能和维护。 - John

1

在事实中,您的最低粒度是什么?当您提到区域销售和总净销售额等内容时,我会认为您可能混淆了度量和维度。例如:地区将是销售事实的一个维度。


我明白你的错误示例了。这些指标可以是折扣、总销售额、净销售额、成本等,而不是区域销售额。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接