Performance 如何更改mondrian关于联接表的配置
我有一个问题如下:Performance 如何更改mondrian关于联接表的配置,performance,mdx,query-performance,mondrian,Performance,Mdx,Query Performance,Mondrian,我有一个问题如下: with member [Measures].[ASD] as 'Count( Filter( [DId].[DId].Members , [Measures].[X] >=2000000000 ) )' select [Branch].[City].Members on axis(0), [Measures].[ASD] on axis(1) from [D]; 对于m
with member
[Measures].[ASD] as
'Count(
Filter(
[DId].[DId].Members
, [Measures].[X] >=2000000000
)
)'
select
[Branch].[City].Members on axis(0),
[Measures].[ASD] on axis(1)
from [D];
对于mondrian
来说,运行它需要很多时间-大约40秒。
这是因为它正在查询每个城市,如下所示:
[[DId].[DId]]: executing sql [select "D"."D_Id" as "c0" from "XXX"."D" "DId", "XXX"."BRANCH" "BRANCH" where "D"."FD_BRANCH" = "BRANCH"."BRANCH_ID" and "BRANCH"."CITY_ID" = 111 group by "D"."D_Id" having (sum("D"."X") >= 2000000000) order by "D"."D_Id" ASC NULLS LAST]
如果您使用SQL语言编写并在oracle中运行它,只需1s。
我想知道在mondrian
中是否有任何配置,可以说不要像这样进行查询并以正式的方式进行查询?计数(应该避免使用过滤器
)
希望运行得更快:
with member
[Measures].[ASD] as
'Sum(
[DId].[DId], //<<maybe this should read [DId].[DId].[DId]?
Iif([Measures].[X] >=2000000000,1,NULL)
)'
select
[Branch].[City].Members on axis(0),
[Measures].[ASD] on axis(1)
from [D];
与成员
[措施][ASD]as
"总和"(
[DId]。[DId],//谢谢您的回答……但当我这样做时,下面的查询执行:从“XXX”中选择“D”。“D”按“D”分组。“D”按“D”排序。“D”最后为空。这花费了很多时间,最后我的内存崩溃了!!所以不幸的是,我无法使用此解决方案:(是的,我在cmt之前发布了它。)