关联子查询中的案例表达性能下降

SUM((CASE WHEN ([t2].[__measure__8] > 1) THEN (CASE WHEN [t2].[__measure__8] = 0 THEN NULL ELSE (CAST([t2].[__measure__9] as float) / [t2].[__measure__8]) END) ELSE [t2].[__measure__9] END))

当我在“相关子查询”上方使用此计算时,“相关子查询”也具有group by。接收结果集需要5分钟以上的时间。此外,查询的内部子集仅需4秒钟即可检索到。我还想念其他东西吗?

编写此case表达式的最佳方法是什么?

za80967190 回答:关联子查询中的案例表达性能下降

由于您的case语句只有1个条件,因此建议改用iif函数。

sum(
    iif([t2].[__measure__8] > 1,iif([t2].[__measure__8] = 0,null,cast([t2].[__measure__9] as float)/[t2].[__measure__8]),[t2].[__measure__9])
)

尝试使用subqueries细分查询,先删除sum(),然后检查改进之处。

,

子案例声明看起来像是不必要的。您可以删除CASE WHEN [t 2].[_ measure _8] = 0

SUM(CASE 
        WHEN ([t2].[__measure__8] > 1) THEN (CAST([t2].[__measure__9] as float) / [t2].[__measure__8]) 
        ELSE [t2].[__measure__9] 
    END )
本文链接:https://www.f2er.com/3162163.html

大家都在问