Vypadá to jako sniffování parametrů.
Zde je pěkné vysvětlení:Cítím parametr!
Sql server má v zásadě plán provádění dotazů v mezipaměti pro parametry, se kterými byl poprvé spuštěn, takže plán není optimální pro nové hodnoty, které předáváte. Když spustíte dotaz přímo, plán se vygeneruje v tu chvíli, takže je to rychlé.
Postup pro rekompilaci můžete označit ručně pomocí sp_recompile nebo použijte volbu With Recompile v jeho definici, aby byl kompilován při každém spuštění.