Может ли NonEmpty (A * NonEmpty (C * B)) быть быстрее, чем NonEmpty (NonEmpty (C * B) * A) - PullRequest
0 голосов
/ 15 октября 2019

У меня есть одна странная проблема с производительностью одного запроса MDX, когда я говорю:

    Non Empty  NonEmpty(

        NonEmpty (  
        {[Customer].[Customer Name].[My Customer]}
        *  AddCalculatedMembers (  DrillDownMember ( { [Account].[Account Code].DefaultMember } ,  { [Account].[Account Code].[All] }  , Recursive )  )  
        ) 
* {[Measures].[Measure 1],[Measures].[Measure 2],[Measures].[Measure 3]}
        )

Этот запрос выполняется за 2 минуты, а после того, как я очищаю деньги с помощью команды xmla, скорость запроса по-прежнему составляет 2 минуты.

После того, как я изменил порядок перекрестного соединения следующим образом (поэтому набор мер стоит первым):

 Non Empty  NonEmpty(
    {[Measures].[Measure 1],[Measures].[Measure 2],[Measures].[Measure 3]} *
    NonEmpty (  
    {[Customer].[Customer Name].[My Customer]}
    *  AddCalculatedMembers (  DrillDownMember ( { [Account].[Account Code].DefaultMember } ,  { [Account].[Account Code].[All] }  , Recursive )  )  
    ) 
    )

тот же запрос выполняется за 30 секунд.

Но после того, как я снял деньги и отменил запрос, который был выполнен за 2 минуты, он неожиданно все еще выполняется за 30 секунд. Поэтому я не могу повторить случай, когда это длилось 2 минуты.

Как это может быть возможно?

...