从 C# 调用时,具有不同名称的相同 SPROC 执行不同

Same SPROC with different names performs differently when called from C#

我有两个相同的存储过程,但名称不同。当我从 C# 调用 Sproc A 时,与 Sproc B 相比,我得到更快的整体响应。当我 运行 SSMS 中的每个 Sproc 并包含执行计划时,我得到非常接近相同的结果。关于可能导致这种差异的原因有什么想法吗?

你传递的参数是一样的吗?我相信 proc 在第一次编译时会收到一个查询计划,并且该计划基于传递的参数。因此,它们可能有不同的查询计划,具体取决于它们最初的调用方式。作为测试,对它们进行 运行 sp_recompile 并确保它们第一次都使用相同的参数调用,以便它们获得相同的查询计划。