2016-08-01 15 views
1

SQL Serverでストアドプロシージャを作成し、1秒でデータを返します。このストアドプロシージャは数日間は正常に動作し、後で遅くなります。しかし、変更せずに再実行すると高速になります。SQL Serverのストアドプロシージャは、しばらくすると遅くなります

Recompileがこの問題を修正する可能性があります。これに関する提案はありますか?

また、ReCompileは、このクエリがほとんど毎秒打たれるため、パフォーマンス上の問題が発生しますか?

+0

あなたは統計を更新しようとしましたか? – bmsqldev

+0

あなたの質問には、いくつかの初期分析を可能にする多くの詳細がありません。たとえば、返されるデータはどこから来ますか? (それはテーブルから抽出されると仮定するのが安全であるように見えますが、どのテーブルがどのように構成されているか)。選択する以外に、SPは何をしていますか?返されるデータの量はどれくらいですか? ..... – FDavidov

+0

また、実際の実行計画には、高速化と低速化が必要です。 – Lavel

答えて

1

また、ReCompileはパフォーマンスの問題を引き起こしますが、このクエリはほぼ毎秒ヒットしますか?

クエリプランをコンパイルミリ秒のところで行われているもののはい再コンパイルが、私はこれは、クエリwont'tの使用既存のクエリプランため、余分なCPUの負担を追加します

、CPU resources.Evenに通行料を取りますRecomplieがこの問題を解決するかもしれないことを知りましたか?

SQLサーバが渡されたパラメータを使用してクエリプランを格納し、この入力のための計画を最適化します。..

はあなたがするたびに再コンパイル、各顧客がほぼ等しい注文を持つテーブルがあると文句を言わないあなたを助けます..

一方、お客様の注文の分布が1から10000の範囲で不均一である場合。この場合、1発注の顧客の入力を使用してSPをコンパイルすると、10000発注の顧客がSQLの意思メモリを過小評価し、tempdbに流出する可能性があります。

parameter sniffingを克服して、私が参照したリンクを読んでみてください、あなたにはどのオプションが役立つかを試してみてください。

関連する問題