存储过程在执行时需要时间

3
我在SQL Server遇到了一个非常奇怪的问题:我有一个存储过程,我从C#代码中执行该存储过程,然后该过程将返回一个datatable / dataset。问题是,当我从C#代码/ADO.NET代码中执行过程时,它花费的时间太长(大约2分钟)。但是当我在SQL Server中执行相同的查询时,它在一秒内就能执行完毕。同时,我尝试使用相同代码创建新存储过程,当我从ADO.NET中执行这个新存储过程时,它不需要那么长时间,而是在C#中在一秒钟内就能执行完毕。所以我不知道我的旧存储过程出了什么问题。
1个回答

2
我猜您在代码调用存储过程时遇到了执行计划不佳的问题。当您运行存储过程时,由于默认情况下从SSMS运行时计划签名不同,因此您将拥有不同的计划。请参见:http://www.sommarskog.se/query-plan-mysteries.html 以获取一些可能的解决方案和清晰度。
如果您的存储过程参数很多,使用option(recompile)每次进行编译可能是有意义的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接