Zasadniczo tak - podsłuchiwanie parametrów (w niektórych wersjach poprawek) SQL Server 2005 jest mocno zepsute. Widziałem plany, które skutecznie nigdy się nie kończą (w ciągu kilku godzin na małym zestawie danych), nawet dla małych (kilka tysięcy wierszy) zestawów danych, które kończą się w kilka sekund po zamaskowaniu parametrów. I dzieje się tak w przypadkach, gdy parametr zawsze miał ten sam numer. Dodam, że w tym samym czasie, gdy miałem do czynienia z tym, znalazłem wiele problemów z nieukończeniem LEFT JOIN/NULLs i zastąpiłem je na NOT IN lub NOT EXISTS i to rozwiązało plan na coś, co by się zakończyło. Znowu (bardzo kiepski) problem z planem wykonania. W czasie, gdy miałem do czynienia z tym, administratorzy baz danych nie dawali mi dostępu do SHOWPLAN, a odkąd zacząłem maskować każdy parametr SP, nie miałem żadnych dalszych problemów z planem wykonania, w których musiałbym zagłębić się w to w przypadku nieukończenia .
W SQL Server 2008 możesz użyć OPTIMIZE FOR UNKNOWN
.