我有一个存储过程,当我想使用exec proc_name
执行它时,需要1分钟
如果我从存储过程中复制代码,则将params声明为变量,然后执行该代码需要10秒钟。
怎么了 ?
我在这里想念什么吗?
我问这个问题是因为我使用ADO.NET,当我想使用ExecuteNonQuery
执行该存储过程时出现超时错误。
谢谢
最佳答案
它是由于使用的计划不理想而引起的。
您提到了s.p.有参数,由于'parameter sniffing',我遇到了类似的问题。
最快的检查是否是问题所在只是为了在SP内部将输入参数复制到局部变量中,然后仅使用局部变量。
这停止了例如某些参数值的优化以其他为代价。
我以前在s.p.其中具有int参数,其中某些参数值稍微改变了控制流程(以及如何执行查询)。
关于sql-server - 执行存储过程比执行SQL花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952550/