星型架构查询 - 您是否必须在查询中包含所有维度(连接)?

时间:2015-07-27 21:10:17

标签: sql schema data-warehouse dimension

您好我对MS SQL数据仓库中的星型模式查询有疑问。

我有一个事实表和8个维度。我很困惑,要从Fact获取指标,我们是否必须使用Fact加入所有维度,即使我没有从中获取数据?这是正确的指标所必需的吗?

我的事实表是巨大的,所以这就是为什么我想知道性能和查询的正确方法。

谢谢!

2 个答案:

答案 0 :(得分:1)

不,您不必加入所有8个维度。您只需要加入包含分析事实表中的指标所需数据的维度。另外,为了提高性能,请确保仅包含维度表中分析所需的列。包括您加入的维度中的所有列都会降低性能。

答案 1 :(得分:0)

没有必要包括所有尺寸。实际上,在探索事实表时,有可能只选择一些维度来加入和删除其他维度。性能问题绝不能成为放弃这种能力的借口。

根据您使用的数据库,您有许多不同的技术可以解决性能问题。一些常见的方式:

  • 聚合表:它是解决性能问题的最佳方法之一。如果您有一个巨大的事实表,则可以仅使用最常查询的列来创建它的聚合版本。这样,它应该小得多。然后,用户(或adhoc查询应用程序)必须使用聚合表而不是原始事实表。好消息是大多数数据库都知道如何自动管理聚合表(例如物化视图)。最初以原始事实表为目标的查询将尽可能透明地重定向到聚合表。
  • 索引:例如,位图索引可以是提高星型模式事实表中性能的有效方法。