用于交叉连接的*运算符的saiku mdx性能问题
有人能解释为什么吗用于交叉连接的*运算符的saiku mdx性能问题,mdx,mondrian,saiku,Mdx,Mondrian,Saiku,有人能解释为什么吗 SELECT NON EMPTY {Hierarchize({[Measures].[Quantity]})} ON COLUMNS, NON EMPTY ([Time].[Years].Members * [Markets].[City].Members * [Product].[Product].Members * [Customers].[Customer].Members) ON ROWS FROM [SteelWheelsSales] 比这慢得多: SELECT
SELECT
NON EMPTY {Hierarchize({[Measures].[Quantity]})} ON COLUMNS,
NON EMPTY ([Time].[Years].Members * [Markets].[City].Members * [Product].[Product].Members * [Customers].[Customer].Members) ON ROWS
FROM [SteelWheelsSales]
比这慢得多:
SELECT
NON EMPTY {Hierarchize({[Measures].[Quantity]})} ON COLUMNS,
NON EMPTY CrossJoin([Time].[Years].Members, CrossJoin([Markets].[City].Members, CrossJoin([Product].[Product].Members, [Customers].[Customer].Members))) ON ROWS
FROM [SteelWheelsSales]
我想使用*操作符进行交叉连接,但它似乎要慢得多。知道我为什么要做什么吗?看来顺序很重要: 为了防止上述链接在将来消失,它基本上比较了以下两个AdvWks脚本的性能: 问题1
WITH MEMBER Measures.PerfmonTest AS
Count(
Crossjoin( [Promotion].[Promotions].[Promotion] ,
Filter([Customer].[Customer Geography].[Customer], RIGHT([Customer].[Customer Geography].CurrentMember.Name,5) = "Smith")
)
)
SELECT Measures.PerfmonTest ON Columns
FROM [Adventure Works]
问题2
WITH MEMBER Measures.PerfmonTest AS
Count(
Crossjoin(
Filter([Customer].[Customer Geography].[Customer], RIGHT([Customer].[Customer Geography].CurrentMember.Name,5) = "Smith")
,[Promotion].[Promotions].[Promotion] )
)
SELECT Measures.PerfmonTest ON Columns
FROM [Adventure Works]
…如果你改变第一个脚本中交叉连接的层次结构的顺序?嗯,有趣的一点。我之前没有意识到。如果我的假设是正确的,最里面的子查询先求值,然后再求值到最外面的子查询,那么是的,顺序可能不同。在OP中的第一个查询中,执行的自然顺序是从左到右吗?@Sourav_Agasti不确定:@whytheq,我的初始查询顺序相同,但在性能上仍然存在巨大差异……两者之间的唯一区别是,在第一个查询中,我使用了*运算符而不是交叉连接函数