在NONEMPTY内部的NONEMPTY或EXISTS之外更快

时间:2014-07-17 15:37:06

标签: ssas mdx

我想知道是否有一种简单的方法来测试哪种更有效:

  • EXISTSNONEMPTY
  • 之外 在EXISTS
  • NONEMPTY

一些简单的例子如下。两者都在1秒内运行,那我该如何分析哪一个最好?

EXISTS

之外

NONEMPTY

SELECT 
    {}
    ON 0, 
    EXISTS(
        NONEMPTY( 
            [Customer].[Customer].[Customer].MEMBERS 
            , {([Date].[Calendar].[Date].&[20060701], [Measures].[Internet Sales Amount])} 
        ),
        [Customer].[Customer Geography].[Country].&[Germany] 
    )
    ON 1 
FROM [Adventure Works] 
EXISTS

内的

NONEMPTY

SELECT 
    {}
    ON 0, 
    NONEMPTY( 
        EXISTS(
            [Customer].[Customer].[Customer].MEMBERS 
            , [Customer].[Customer Geography].[Country].&[Germany]  
        ),
        {([Date].[Calendar].[Date].&[20060701], [Measures].[Internet Sales Amount])}
    )
    ON 1 
FROM [Adventure Works] 

1 个答案:

答案 0 :(得分:1)

对于这样的测试,MDX Studio是一个有用的工具。这是由Analysis Services引擎的一个核心开发人员Mosha Pasumansky开发的。除了Mosha的一些博客文章之外,没有详细的文档,而且几年前曾经有一个论坛可能已经消失,因为Mosha离开了Analysis Services。

要检查查询的效果,请在查询标签上输入,然后点击"个人资料"按钮。这将清除Analysis Services缓存,并执行多维数据集的计算脚本,然后执行两次查询。第一次,查询在冷缓存上运行,第二次在暖缓存上运行,因为刚刚执行完全相同的查询。