Sql server SQL Server案例语句性能不好
我有一个包含多个CASE语句的查询,如下所示。即使在适当的索引之后,也需要花费大量的时间来执行。case语句上的Sum操作导致性能不佳。如何重新编写上述查询以提高性能Sql server SQL Server案例语句性能不好,sql-server,Sql Server,我有一个包含多个CASE语句的查询,如下所示。即使在适当的索引之后,也需要花费大量的时间来执行。case语句上的Sum操作导致性能不佳。如何重新编写上述查询以提高性能 SELECT H.Item, SUM(CASE A.CategeoryId WHEN 123 THEN NULLIF(IIF(C.IsActive = 0 AND ( ( c.RowID IN ( 2, 4 )
SELECT H.Item,
SUM(CASE A.CategeoryId
WHEN 123 THEN NULLIF(IIF(C.IsActive = 0
AND ( ( c.RowID IN ( 2, 4 )
AND H.SubId <> ISNULL(C.ItemId, 0) )
OR ( c.RowId NOT IN ( 2, 4 )
AND H.SubId = ISNULL(C.ItemId, 0) ) ), 0, A.Sales), 0)
ELSE 0
END) AS [TotalSales1],
SUM(CASE A.CategeoryId
WHEN 198 THEN NULLIF(IIF(C.IsActive = 0
AND ( ( c.RowID IN ( 2, 4 )
AND H.SubId <> ISNULL(C.ItemId, 0) )
OR ( c.RowId NOT IN ( 2, 4 )
AND H.SubId = ISNULL(C.ItemId, 0) ) ), 0, A.Sales), 0)
ELSE 0
END) AS [TotalSales2],
'',
'',
'',
'',
''
FROM SubItem AS H
INNER JOIN Item AS C WITH (NOLOCK)
ON H.Item = C.ItemId
LEFT OUTER JOIN #temp1 AS A
ON H.SubId = A.ItemId
WHERE H.Productid = 99
GROUP BY H.Item,
C.ItemId,
C.RowID
发布执行计划。这将不是直接的总和或情况。也许您的正确索引可以改进。也许temp1没有索引,临时表经常被忽略。与其期望我们从您的查询中解析和理解您的意图,不如用文字描述您正在尝试做什么?另外,添加示例数据和预期结果。