Похоже, что планировщик запросов принял решение в буквальном запросе, который основан на информации, которая у него уже есть. Он будет иметь статистику, которую он может эффективно запрашивать на основе распространения данных, указанных в вашем конкретном литерале.
Параметризованный запрос выбрал запрос, который, по его мнению, является наиболее справедливым для всех данных в вашей таблице, и вы заметите, что это много вложенных циклов (производительность = плохо).
Возможно, вы могли бы попытаться запустить инструменты оптимизации базы данных в своей базе данных, чтобы посмотреть, могут ли некоторые индексы помочь вам здесь?
В частности, в вашем запросе попробуйте это:
declare @p0 int
set @p0 = 1000
select *
from foo
join bar on bar.x = foo.x
join baz on baz.y = foo.y
where foo.x = @p0
OPTION ( OPTIMIZE FOR (@p0 = 1000))
Но я бы с осторожностью поступил так, не будучи уверенным, что данные, содержащиеся в этом запросе, не изменятся и что ваш запрос по этому плану ВСЕГДА будет более эффективным.