私は元のポスターと同じ問題を抱えていましたが、引用された答えは私にとって問題を解決しませんでした。クエリは、ストアドプロシージャからはまだ非常に遅く実行されました。
ここで別の答えを見つけました「パラメータスニッフィング」、Omnibuzzに感謝します。要約すると、ストアドプロシージャクエリで「ローカル変数」を使用することになりますが、理解を深めるために元の変数を読んでください。これはすばらしい記述です。例:
遅い方法:
CREATE PROCEDURE GetOrderForCustomers(@CustID varchar(20))
AS
BEGIN
SELECT *
FROM orders
WHERE customerid = @CustID
END
迅速な方法:
CREATE PROCEDURE GetOrderForCustomersWithoutPS(@CustID varchar(20))
AS
BEGIN
DECLARE @LocCustID varchar(20)
SET @LocCustID = @CustID
SELECT *
FROM orders
WHERE customerid = @LocCustID
END
これが他の誰かに役立つことを願っています。これにより、実行時間が5分以上から約6〜7秒に短縮されました。