Sql Server存储过程直接执行 Exec 存储过程名称 需要很多时间,可直接执行存储过程定义的命令 就没问题
有个存储过程,已离职同事写的,工作偶尔出问题,主要表现是:
直接调用执行 Exec 存储过程名字 最长需要30多分钟才能出结果
但是把存储过程里面的内容直接放到新建查询窗口中执行,只需要10来秒
第一次遇到去除了里面某个select(连了六七个表)的where过滤条件,恢复exec执行效率为十来秒
正常了7~8天,今天又变成了exec需要30多分钟
这次去掉了3个where过滤条件,exec执行效率恢复到秒级
不知道哪位有遇到过类似的问题么?有没有什么解决方案或者问题猜想
中间的临时表多不
这种情况可能是由于存储过程在执行时的执行计划(execution plan)与直接执行存储过程定义的命令时的执行计划不同导致的。
执行计划是 SQL Server 在执行查询或存储过程时生成的一种路线图,它描述了 SQL Server 在执行查询或存储过程时的操作步骤、操作顺序、使用的索引和临时对象等信息。如果执行计划不优化或者不合理,会导致执行效率变慢。
建议您可以尝试在执行存储过程时使用以下语句来强制重新编译存储过程的执行计划,以确保使用最优执行计划:
EXEC sp_recompile 'your_stored_procedure_name';
此外,您可以使用以下语句来查看存储过程的执行计划:
EXEC sp_showplan 'your_stored_procedure_name';
这将显示存储过程的执行计划,您可以检查其中是否存在任何问题。如果存在问题,您可以尝试重新编写存储过程以优化执行计划。