Применительно к вычислениям в столбцах Cross Apply и Case - PullRequest
0 голосов
/ 03 февраля 2012

Есть ли преимущество использования Cross применять по сравнению с заявлениями 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)

1 Ответ

1 голос
/ 03 февраля 2012

Разницы в производительности нет. В этом можно убедиться, посмотрев планы выполнения обоих вариантов.

Кросс-аппликация в этом шаблоне - это просто "Вычислить скаляр" Оптимизатор запросов умен в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...