ストアドプロシージャに配置するクエリがあります。ローカル変数を使ってクエリを実行すると、クエリの実行に1秒かかります。ストアドプロシージャ内に同じクエリを配置してSPを呼び出すと、実行に約2分かかります。ストアドプロシージャ内に配置するとSQL Serverクエリが遅く実行される
これまでの質問から、私はパラメータスニッフィングに関連している可能性があると思います。私がSPの中にローカル変数を宣言してから、ローカル変数を使用する前にこの問題が発生したとき。これは過去に働いていましたが、この場合は私を助けてくれないようです。
私は現在、私もまた、私はそうのような私のSPの最後にOPTION(RECOMPILE)
を追加しようとしているので、
CREATE PROCEDURE dbo.ProcedureName
@DIV VARCHAR(4),
@STD VARCHAR(1), -- S or N
@scen varchar(20)
WITH RECOMPILE
AS
BEGIN
DECLARE
@DIV_copy VARCHAR(4),
@STD_copy VARCHAR(1),
@scen_copy varchar(20);
SELECT
@DIV_copy = @DIV,
@STD_copy = @STD,
@scen_copy = @scen;
ようWITH RECOMPILE
を追加しようとしている
CREATE PROCEDURE dbo.ProcedureName
@DIV VARCHAR(4),
@STD VARCHAR(1), -- S or N
@scen varchar(20)
AS
BEGIN
DECLARE
@DIV_copy VARCHAR(4),
@STD_copy VARCHAR(1),
@scen_copy varchar(20);
SELECT
@DIV_copy = @DIV,
@STD_copy = @STD,
@scen_copy = @scen;
あります
SELECT *
FROM #Output
OPTION(RECOMPILE)
END
GO
を
私も使ってみました:
OPTION(OPTIMIZE FOR UNKNOWN)
と同様に:このオプションをオン
OPTION(QUERYTRACEON 4136)
、私は、クエリのトレースのための適切な権限を持っていません。
上記の5つの修正プログラムのいずれも、ストアドプロシージャがストアドプロシージャの外部に1〜2秒かかる同じクエリの場合、2分から2分30秒の間に問題が発生するため、この問題は解決されません。
これらの修正プログラムはすべて、誰もが同じような問題があった
「Different Approaches to Correct SQL Server Parameter Sniffing」は、この記事から来ましたの?あなたの時間をありがとう!
のSQL Server 2008R2
これはパラメータスニッフィングのように聞こえますが、それが何であるか他の考え方はありません。この記事では、まだ試していない追加のソリューションがあるかどうかを確認することができます:http://www.sommarskog.se/query-plan-mysteries.html –
'OPTION(RECOMPILE)を私のSPの終わり - それは不快なクエリの後に配置する必要があります。しかし、 '再コンパイルで'が動作しなかった場合、私はこの訂正が疑わしいです。 –
私は全く同じ症状を抱えており、paramsのローカルコピーを作成すると常に解決されています。唯一の違いは、SELECTステートメントの代わりにSETステートメントを使用してローカル変数に値をコピーしていることです。 –