0

SQLサーバーの動作に少し困惑しています。

多くのステップを実行する非常に大きなストアド プロシージャがあります。次のように開始すると:

Exec [MyStoredProcedure] @MyBoolean=0

Management Studio でストアド プロシージャの内容を直接呼び出すよりも時間がかかります。パラメータから来る可能性があるというstackoverflowの回答を見たので、追加しました:

declare @IMyBoolean bit

select @IMyBoolean=@MyBoolean;

その後 @IMyBoolean ですべてを実行しましたが、結果は決定的ではありませんでした。少しは良くなりましたが、それほどではありませんでした:

sp : 4分

パラメーター インターフェイスを使用した sp: 3 分

ダイレクト SQL 2 分

この振る舞いについて誰か説明がありますか?

ここにxmlplanがあります

4

1 に答える 1

0

プランに表示された各クエリ バッチについて、90% を超える影響があるインデックスが欠落しています。

クエリ オプティマイザーの提案に従ってこれらのインデックスを作成します (インデックスの詳細 - 緑色のテキスト - を右クリックし、[Missing Index Details] を選択します)。

次に、新しい結果をポストバックします。ほとんどのテーブル スキャンがインデックス シークに変換されるため、はるかに高速になるはずです。

次のステップは、必要に応じて、これらのインデックスを微調整して、より多くのクエリをカバーすることです。

于 2012-06-27T10:03:26.530 に答える