如何优化下面的sql查询

如何优化下面的sql查询,sql,sql-query-store,Sql,Sql Query Store,我有一个后端限制,即十进制类型(aban)的结果列中不能包含超过1000个字符 如何优化此查询 我尝试过使用诱惑,但结果并不像预期的那样 aban = CASE WHEN ( sum(isnull(a.callshandled,0)) + sum(isnull(a.totalcallsaband,0)) + sum(isnull(a.incompletecalls,0)) + sum(isnull(a.returnbusy,0)) + sum(isnull(a.returnring

我有一个后端限制,即十进制类型(aban)的结果列中不能包含超过1000个字符

如何优化此查询

我尝试过使用诱惑,但结果并不像预期的那样

aban = 
CASE 
WHEN ( 
    sum(isnull(a.callshandled,0)) + sum(isnull(a.totalcallsaband,0)) + sum(isnull(a.incompletecalls,0)) + sum(isnull(a.returnbusy,0)) + sum(isnull(a.returnring,0)) + sum(isnull(a.icrdefaultrouted,0)) + sum(isnull(a.ndr,0)) + sum(isnull(a.overflowout,0)) + sum(isnull(a.callsrona,0)) + sum(isnull(a.returnrelease,0)) + sum(isnull(a.callsroutednonagent,0)) + sum(isnull(a.shortcalls,0)) + sum(isnull(a.agenterrorcount,0)) + sum(isnull(a.errorcount,0))
  ) 
  = 0 THEN 
  0 
  ELSE (sum(isnull(a.totalcallsaband,0)) * 1.0) / (sum(isnull(a.callshandled,0)) + sum(isnull(a.totalcallsaband,0)) + sum(isnull(a.incompletecalls,0)) + sum(isnull(a.returnbusy,0)) + sum(isnull(a.returnring,0)) + sum(isnull(a.icrdefaultrouted,0)) + sum(isnull(a.networkdefaultrouted,0)) + sum(isnull(a.overflowout,0)) + sum(isnull(a.callsrona,0)) + sum(isnull(a.returnrelease,0)) + sum(isnull(a.callsroutednonagent,0)) + sum(isnull(a.shortcalls,0)) + sum(isnull(a.agenterrorcount,0)) + sum(isnull(a.errorcount,0)))
END 
,
优化查询时,公式中的字符数应小于1000,查询优化前后结果列的值应相同。

请尝试以下方法:

DECLARE @dividend int  = 10;
DECLARE @divisor int  = 0;

SELECT COALESCE(@dividend / NULLIF(@divisor,0), 0);

所以你们可以避免重复计算除数。

这是一个很好的开始,当你们问一些问题时。@AbhishekRai。您尚未显示查询。你表现出一种表情。如果没有表达式所在查询的上下文,通常无法对其进行优化。