Как говорит Гордон в своем комментарии выше, Outer Apply, используемый в вашем коде, должен иметь тот же или аналогичный план выполнения, что и внешний запрос на применение. Однако, если у вас есть несколько скалярных подзапросов, подобных этому:
select
*,
(select Min(Val) from t2 where Id=t1.RefId) as Minimum
(select Max(Val) from t2 where Id=t1.RefId) as Maximum
(select count(*) from t2 where Id=t1.RefId) as Count
from t1
, где единственная разница между подзапросами - возвращаемое значение, тогда внешний запрос на применение может быть более эффективным:
select
*,
c.Minimum,
c.Maximum,
c.Count
from t1
outer apply (select Min(Val) as Minimum,
Max(Val) as Maximum,
count(*) as Count,
from t2 where Id=t1.RefId) c