Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq到SQL执行存储过程非常慢_C#_Sql_Asp.net Mvc_Linq_Linq To Sql - Fatal编程技术网

C# Linq到SQL执行存储过程非常慢

C# Linq到SQL执行存储过程非常慢,c#,sql,asp.net-mvc,linq,linq-to-sql,C#,Sql,Asp.net Mvc,Linq,Linq To Sql,我有一个我调用的存储过程 Int32 siteID = 1; DateTime startDate date; DateTime endDate date; var result = this.datacontext.GetSummary(siteID, startDate, endDate); 使用linq时执行速度非常慢,但在SSMS中执行速度非常快 当我将SP更改为仅接受开始日期并在SP中通过以下方式创建结束日期时: DECLARE @EndDate date SET @EndDate

我有一个我调用的存储过程

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

var result = this.datacontext.GetSummary(siteID, startDate, endDate);
使用linq时执行速度非常慢,但在SSMS中执行速度非常快

当我将SP更改为仅接受开始日期并在SP中通过以下方式创建结束日期时:

DECLARE @EndDate date
SET @EndDate = DATEADD(yy,1,@StartDate)
然后执行如下操作:

var result = this.datacontext.GetSummary(siteID, startDate);
查询速度又快了。我正在传递确切的值作为结束日期

有人见过这样的东西吗。未传入结束日期的查询将在0秒内执行。截止日期为6分钟


如果您有任何建议,我们将不胜感激。

我将看看生成了什么样的sql,您可以看到如何做到这一点。获取sql后,请查看Linq在将查询转换为sql时是否有异常行为。

您使用过sql server跟踪实用程序吗?这将让您了解幕后的情况。我强烈建议您看看sql profiler。结束日期的值是什么?在第二种情况下,您将结束日期设置为仅迟于1个月,这可能会获取很少的记录,因此工作速度很快。但是,如果您将结束日期设置为比开始日期晚几年,那么它的执行速度会慢,具体取决于要搜索的行数。您可能还想为日期列编制索引。由于这是一个存储过程,我不确定表达式树解析器是否生成了任何异常情况。我必须在存储过程中强制转换参数日期,然后它才能工作!