存储过程需要花时间执行

时间:2017-02-20 17:54:01

标签: sql-server stored-procedures ado.net sql-execution-plan

我在SQL Server面临一个非常奇怪的问题,我有一个存储过程,我正在从C#代码执行该过程。该过程将返回一个数据表/数据集。

我的问题是,从C#代码/ ADO.NET代码执行过程需要花费太多时间(大约2分钟)。但是当我从SQL Server执行相同的查询时,它会在一秒钟内执行。

此外,我尝试使用相同的代码(旧的过程代码)创建新的过程,当我从ADO.NET执行这个新过程时,它不会花费太多时间。它正在C#中第二次执行。

所以我不知道我的旧程序有什么问题。

1 个答案:

答案 0 :(得分:2)

我猜你从代码调用过程时有一个糟糕的执行计划。运行存储过程时,您将有一个不同的计划,因为默认情况下从SSMS运行时计划签名是不同的。

请参阅:http://www.sommarskog.se/query-plan-mysteries.html了解一些可能的修复和清晰度。

如果您的过程参数很重,那么每次使用时编译都是有意义的     option(recompile);