2017-02-20 137 views
1

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

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

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

所以我不明白我的旧程序有什么问题。

回答

1

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

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

如果你的程序参数很重,每次使用 option(recompile);

+0

感谢您的建议。它现在工作。 – Boss