2010-12-11 11 views
5

私のパフォーマンスボトルネックである検索ストアドプロシージャがあります。C#から呼び出されたストアドプロシージャはSQL Managementスタジオよりも6倍長く実行されます

何が起こったのかを制御するために、すべてのパラメータのロギングとSPの実行時間を追加しました。

は、私はMicrosoft SQL Serverの管理Studioの実行時間からSPを呼び出すときは、1.3から1.6秒であることに、気づいたが、私はC#のからそれを呼び出すとき、それはとり6-8 secods(!!!)

Parameters               | Time (ms) 
"tb *"TreeType:259Parents:212fL:13;14fV:0;lcid:2057min:0max:10sort:-1 | 6406  
"tb *"TreeType:259Parents:212fL:13;14fV:0;lcid:2057min:0max:10sort:-1 | 1346  

SPはLINQで呼び出されます。ログイン設定は同じです。 SPは全文検索を使用します

何が原因ですか?

+0

私はMicrosoft SQLキャッシュシステムについてはわかりません。管理スタジオからストアドプロシージャを実行してからC#を実行してください。結果は現在と異なるでしょうか? – Anton

+0

@Anton:コールオーダーに依存しない同じ結果を得ることができます。実際には、このリストはid descでソートされているので、最新のリクエストが最後です。 – st78

+0

LINQの代わりに 'SqlCommand'を使用しようとしましたか?追加で 'Prepare'メソッドを使うことができます。ローカルのSQL Serverを使用していますか?どのデータがストアドプロシージャを返しますか? – Oleg

答えて

2

このような問題を突き止めるには、データベースへの正確な呼び出しを記録するSQLプロファイラが最適です。

私の違いは、SQLサンプルで渡されたノーエリューが、 ''とC#によって渡されたヌル値で置き換えられていた点です。

関連する問題