我在 SQL Server 中面临一个非常奇怪的问题,我有一个存储过程,并且我正在从 C# 代码执行该过程。该过程将返回一个数据表/数据集。
我的问题是,C# 代码/ADO.NET 代码的执行过程花费了太多时间(大约 2 分钟)。但是当我从 SQL Server 执行相同的查询时,它会在一秒钟内执行。
另外,我尝试使用相同的代码(旧过程代码)创建新过程,当我从 ADO.NET 执行这个新过程时,并没有花费太多时间。它在 C# 中第二次执行。
所以我不明白我的旧程序有什么问题。
我猜测当从代码调用该过程时您的执行计划很糟糕。当您运行存储过程时,您将有一个不同的计划,因为默认情况下从 SSMS 运行时计划签名不同。
see: http://www.sommarskog.se/query-plan-mysteries.html http://www.sommarskog.se/query-plan-mysteries.html一些可能的修复和清晰度。
如果您的过程参数较多,则每次使用时进行编译可能是有意义的option(recompile)
;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)