最近、SQL Serverで奇妙な問題が発生した場合、SQL Serverのプロシージャ実行計画に奇妙な問題があります
私はストアドプロシージャを持っています(電話SPold
)かなりの計算量があります(約6000人のユーザーのために情報をアプリに戻すことはできませんこれは姓に基づいて1000になります))。ストアドプロシージャは通常数秒で実行され、数分ごとに1回呼び出されます。
今朝、ストアドプロシージャが突然実行に4〜10回かかるので、タイムアウトが発生しました。私は、新しい名前(SPnew
)でプロシージャのコピーを作成し実行することによって、高速実行時間を再度得ることができることを発見しました。これは私に、実行計画が元の問題SPold
であることを示していたので、私はそれを再コンパイルして実行することに決めました。これにより、結果はより速く(SPnew
ほど速くはないが)返されるが、その後ユーザからのSPold
への呼び出しは再び遅くなる。それは新しい計画が保たれていなかったようだった。
これを修正するのは、SPold
にExec SPnew
を入れて、SPold
を呼び出すと再び高速に戻ります。
誰もここで何が起こっているか考えていませんか?一晩更新されたのは統計だけでしたが、これはSPold
とSPnew
の両方に影響するはずです。
これは役立つかもしれません[アプリケーションで遅く、SSMSで速い? パフォーマンスミステリーを理解する](http://www.sommarskog.se/query-plan-mysteries.html) – Kashif
オクラホマ - これを完全なものとしてマークしていますが、ミッチもパラメータスニッフィングという点では正解です。 Treaschfは私に解決策を与えます...私はまた、最も有益な上記のリンクを読んでいます。 – Milambardo