2012-02-05 19 views
0

私はEF 4を使用していますが、別のクールークで困惑しています...基本的には、SQLからデータを取得して複合型を返すかなり簡単なストアドプロシージャがあります。関数のインポートを使用して、ストアドプロシージャをモデルに追加しました。それは、次のような構造の多かれ少なかれです。Entity Frameworkストアドプロシージャーとリモート接続

using (ModelContainer context = GetNewModelContainer()) 
{ 
    return context.GetSummary(id, startDate, endDate, type).ToList(); 
} 

私は上記のコードは、リモートSQL接続上で実行されることを言及する必要があります。実行には約10分かかります。ただし、リモート接続でSQL Server Management Studioを使用すると、ストアドプロシージャはほぼ即座に実行されます。

返されるレコードは100個しかなく、各レコードには約30個のフィールドがあります。

上記のコードを顧客のデータベースのバックアップに対してローカルで(リモート接続なしで)実行すると、遅延なしで実行されます。

私はこのパフォーマンスのヒットを引き起こす可能性がありますが困っています。 10分は受け入れられません。私はそれがストアドプロシージャだとは思わない。リモート接続のためシリアル化できますか?私がどのようにして犯人を追跡し修正することができるかについての考えはありますか?

答えて

3

説明している症状は、(パラメータスニッフィングのために)誤ってキャッシュされたクエリプランに関連付けられている現象です。

統計情報が最新であることを確認し、断片化されている場合はインデックスを再構築してください。

標準参照先はSlow in the Application, Fast in SSMS?です。

可能な便利なSOリンク:

+0

参考になりました。私はそれがこれらの線に沿って何かであると感じている。私は上記のリンクを読むのに少し時間を費やすつもりです。私は私が見つけたものをフォローアップします。再度、感謝します。 –

関連する問題