0

私が呼び出すストアドプロシージャがあります

Int32 siteID = 1;
DateTime startDate date;
DateTime endDate date;

var result = this.datacontext.GetSummary(siteID, startDate, endDate);

これは linq では非常に遅く実行されますが、SSMS では非常に高速です。

開始日のみを受け入れるように SP を変更し、SP で endDate を作成する場合:

DECLARE @EndDate date
SET @EndDate = DATEADD(yy,1,@StartDate)

そして、以下のように実行します。

var result = this.datacontext.GetSummary(siteID, startDate);

クエリは再び非常に高速です。EndDate となる正確な値を渡しています。

誰もこのようなものを見たことがありますか。終了日が渡されないクエリは、0 秒で実行されます。終了日で6分かかります。

どんな提案でも大歓迎です。

4

1 に答える 1

2

生成されているSQLを確認します。その方法はこちらで確認できます。SQL を取得したら、Linq がクエリを SQL に変換しているときに奇妙なことをしていないかどうかを確認します。

于 2013-07-03T19:47:03.337 に答える