sql-server - 执行存储过程比执行SQL花费的时间太长

标签 sql-server

我有一个存储过程,当我想使用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/

相关文章:

SQL 服务器 : group by a function on a field an select that

sql - 按数字顺序排列字符串 alpha A1-1-1、A1-2-1、A1-10-1、A1-2-2、A1-2-3 等

sql - 存储过程比动态查询慢

sql - 如何在 SQL 中获取最大子集的最大记录

mysql - SQL JOIN with And 子句和某些条件

sql - 对于具有 NULL 值的硬编码列,ISNULL 返回 0

sql-server - "Catching"SQL Server 2005 中用户定义函数中的错误

sql - 将货币符号附加到 SQL 查询结果

sql - 在 SQL Server 中搜索当前日期的数据

sql-server - 如何在sql中打印表变量值?