【发布时间】:2014-01-30 17:27:26
【问题描述】:
我已经构建了 SSRS 报告,它将 CustomerID 作为参数并使用它运行 MDX 查询。
使用 WHERE 子句只需 1 秒即可运行,而如果我将其传递给 SUBSELECT 子句则需要 13 秒! 而且我必须使用 SUBSELECT 因为我想在结果中显示成员的姓名
长查询的语法是:
SELECT NON EMPTY { [Measures].[Revenue] } ON COLUMNS,
NON EMPTY { ([CUBE DIM DATE].[Month CD].[Month CD].ALLMEMBERS *
[CUBE DIM CUSTOMER].[Account MNG].[Account MNG].ALLMEMBERS *
[CUBE DIM PRODUCT].[Product CD].[Product CD].ALLMEMBERS ) }
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, MEMBER_KEY ON ROWS FROM
( SELECT ({ [CUBE DIM CUSTOMER].[Customer No].&[111111]}) on 0 from [CUBE_Prod] )
所以如果我使用的不是最后一行:
[CUBE_Prod] WHERE [CUBE DIM CUSTOMER].[Customer No].&[111111]
...其余的都保持不变,然后只需要 1 秒。 显然,我错过了一些东西......
【问题讨论】:
-
如果您正在生成查询,您知道客户编号,并且可以将其放入报告中而无需查询返回。
标签: performance query-optimization ssas mdx subquery