【发布时间】:2015-12-02 02:21:28
【问题描述】:
我想知道以下两个查询中哪一个的性能更高?
查询 1:
SELECT NONEMPTY(CROSSJOIN({[Product].[Category].children},
{[Scenario].[Scenario].members}
)
) ON COLUMNS
FROM [Analysis Services Tutorial]
查询 2:
SELECT CROSSJOIN(NONEMPTY({[Product].[Category].children}),
NONEMPTY({[Scenario].[Scenario].members})
) ON COLUMNS
FROM [Analysis Services Tutorial]
我会说查询 2 的性能/优化更高,因为首先您取出所有不必要的成员,然后交叉加入它们。第一个查询交叉连接所有内容,然后取出空值。那将是我的猜测,但我想要一个可以清理我的人。
编辑 1 响应 cmets 的回答
假设我添加了一个度量作为第二个参数,因此它不会转到“默认度量”。第二个查询如何返回 null 值?我指定在非空成员之间交叉加入。而且我真的不明白无论涉及的维度如何,它们如何返回不同的结果。对我来说,它们似乎相当相似。我没看到什么?
查询 1:
SELECT NONEMPTY(CROSSJOIN({[Product].[Category].children},
{[Scenario].[Scenario].members}
), [Total Internet Sales]
) ON COLUMNS
FROM [Analysis Services Tutorial]
查询 2:
SELECT CROSSJOIN(NONEMPTY({[Product].[Category].children},[Total Internet Sales]),
NONEMPTY({[Scenario].[Scenario].members},[Total Internet Sales])
) ON COLUMNS
FROM [Analysis Services Tutorial]
编辑 2
正如答案所说,查询不一样。当@GregGalloway 提出其他场景时,我意识到了这一点。 我用样本数据做了一个excel,所以也许有人会发现它很有用。
【问题讨论】:
标签: ssas mdx query-performance adventureworks