Так в чем же разница в вашем плане выполнения? Это даже с использованием индекса?
Пытались ли вы использовать вместо этого UNION all (я предполагаю, что вы пытаетесь получить записи, имеющие тот или иной идентификатор, который не может дать ваш текущий запрос; все, что вы предоставляете, представляет собой полный список всех Значения skey, для этого вообще не нужно присоединяться.)
Select
SKey
From
dbo.tfnGetLatest(@ID) a
left join [STAGING].dbo.RefSrvc b on
a.LID = b.ESIID
union all
Select
SKey
From
dbo.tfnGetLatest(@ID) d
left join [STAGING].dbo.RefSrvc c on
d.EID = c.ESIID
Тем не менее может быть неэффективным, если он не использует индекс, но, вероятно, вернет лучший набор записей.
Или подумайте о том, чтобы поместить значения, возвращенные из табличной функции, во временную таблицу, где ее можно проиндексировать, и затем выполнить соединение.