【发布时间】:2015-01-09 11:17:04
【问题描述】:
我对 MDX 和 SSAS 的经验很少,所以不知道从哪里开始:
我们正在从 SQL 2005 环境迁移到 SQL 2012。在 SSAS 2005 上,下面的查询运行大约需要 3 到 4 秒。在 SSAS 2012 上运行相同的查询时,它会在完成前运行高达 1 小时 58 分钟。谁能解释一下为什么性能如此糟糕,以及如何改进它?我们使用的是 SQL 2012 11.0.5532.0 (X64)。
非常感谢。
with member [Measures].[Calculation] as
Format(
IIF(isempty([Measures].[average complience to requirements]), null,
[Measures].[average complience to requirements]),
"#,0.00"
)
select
non empty
{
[Measures].[average complience to requirements],
[Measures].[Calculation]
} on 0,
nonempty
(
[Customer].[App Key Company Id].children *
[Location].[App Key Region Id].children *
[Category].[App Key Category Id].children *
[Vendor].[App Key Vendor Id].children,
[average complience to requirements]
) on 1
from
[BSC]
where
(
strtomember(
"[Date Submitted Date].[YYYY-MMMM-DD].[Month Of Year].&[" + Format( Now(), "yyyyMM") + "]"
):
strtomember(
"[Date Submitted Date].[YYYY-MMMM-DD].[Month Of Year].&[" + Format( Now(), "yyyyMM") + "]").Lag(2)
)
【问题讨论】:
-
请回答以下问题: 1. 'BSC' 立方体中有分区吗? 2. 'Date Submitted Date' 维度成员是否大于当前月份?
-
为什么在两个轴上都选择
[average complience to requirements]?从AXIS(1)删除它 -
@AlexPeshik 回答您的问题:1. 否 2. 否
-
@user2460549, 1. 所以,没有预取分区问题可能会导致速度变慢,这很好。 2. 我想,您可以通过将 WHERE 过滤器更改为 TAIL 功能来提高速度,如下所述。但不幸的是,这不是您问题的一般答案。您能否在分析器中创建两个具有最大 SSAS 相关事件数的跟踪 (informit.com/articles/article.aspx?p=1745747) 并分析它们?