この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 22757|答える: 0

[出典] ストアドプロシージャは高速で実行される一方で、プログラム呼び出しは遅くなる問題を解決します

[リンクをコピー]
掲載地 2018/05/21 13:55:48 | | |
ここ2日間、非常にフラストレーションの溜まる問題に直面しました。SQL Server 2012のクエリアナライザーで約120行のストアドプロシージャが実行されているのです。
速度は非常に理想的で、約500件のデータレコードを1秒以内にフィルタリング・取得できます。
しかし、C#プログラムコードで呼び出すと接続タイムアウトが促されます。 CommandTimeoutを300に設定すると、表示までに約3分かかります。
コードを何度も確認しましたが、エラーは見つかりませんでした。 問題は残ります。

原因分析:
1. クエリアナライザーの実行速度が速く、データ量が少ない場合。
2. プログラムの呼び出しだけが遅い。
3. CommandTimeoutパラメータを設定すると結果が表示されますが、時間がかかります。

まとめると、問題はC#コードにあると予備的に結論づけられます。 しかし、検査後に得られるものはありませんでした。

百度でこの情報を確認してください。
ついにCSDNフォーラムで似たような情報投稿を見つけました。 あるネットユーザーは返信で「実施計画が期限切れになっている可能性がある」と述べました。
夢の中で本当に目が覚めました。

クエリアナライザーですぐに実行してください:

プログラムを再度テストし、今度はついに動作した。 速度も非常に満足のいくものです。

原因分析:
ストアドプロシージャは事前コンパイルされるため、最初の実行時に実行計画が生成され、この実行計画は(再コンパイル指定されていない限り)後続の実行で使用されます。実行のたびに実行計画を生成するわけではありません。
ストアドプロシージャに関わるオブジェクト構造が調整されたり、関連データが大幅に変更されて元の計画が現在の現状(実行計画の期限切れ)に適さなくなる可能性がある場合、ストアドプロシージャは再コンパイルされるべきです。

最後に、ストアドプロシージャのコードを添付します:







先の:単一のAPPプロモーションページコードソースを共有してください。適応力があり、とても美しく寛大です!
次に:C#オープンソースフレームワーク(再版)
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com