испытал такое же поведение.(установите параметры равными) Обычный запрос, создающий параллельный план и использующий sp_executesql, создает последовательный план.
declare @xyzParam1 datetime,@xyzParam2 datetime
select @xyzParam1='Sep 1 2014 12:00:00:000AM',@xyzParam2='Sep 26 2014 11:59:59:000PM'
SELECT * FROM Theview WHERE departuretime BETWEEN @xyzParam1 AND @xyzParam2
;
vs
exec sp_executesql N'SELECT * FROM Theview WHERE departuretime BETWEEN @xyzParam1 AND @xyzParam2',N'@xyzParam1 datetime,@xyzParam2 datetime',@xyzParam1='Sep 1 2014 12:00:00:000AM',@xyzParam2='Sep 26 2014 11:59:59:000PM'
Мне удалось получить оптимальный результат, изменив используемый вид, потому чтоон содержал, например, левые соединения для данных, которые всегда ожидались.(преобразовано в INNER join)
Теперь обычный запрос выбирает тот же план, что и план, полученный с помощью sp_executesql, и производительность намного выше.