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 回答