使用Cross apply over case语句是否有优势?例如,如下所示,我需要对列进行计算,使用交叉应用来实现这一点是否效率低或者没有性能差异?
SELECT * from myTable
cross apply
(
select test1 =
CASE
WHEN Price <> '' AND Cost <> 0 and
Cast(Cost As float) <> -1 THEN Cost + Price
WHEN Price <> '' AND Cost = 0 THEN bestPrice
WHEN Price <> '' AND Cost = -1 THEN CAST(Cost AS varchar(20))
END
) as test1
cross apply
(
select Handling = round(((Price * 1.2) + 2.5) / 0.85, 2)
) as Handling
WHERE (accuracy > 0 and Total <> -1)
答案 0 :(得分:1)
没有性能差异。您可以通过查看两种变体的执行计划来验证这一点。
这种模式中的交叉应用只是一个“计算标量”。查询优化器对此非常了解。