存储过程奇怪的问题
我有一个系统里面有一个存储过程 2000多行。
我直接给参数在查询器里面运行需要好久好久都没有反应。参数只给1天时间就需要5分多钟,要是一个月的时间那就一直运行不出来(等了一个多小时就取消了)。
我把这个里面的代码原封不动的分成三部份分,分别运行。最长的只要2分钟,最短的只要5秒,一共加起来也不到5分钟。
请问把代码写在一个存储过程中会有影响吗?这是什么原因?想了好久都想不明白,同样的代码分开的效率这么高
大家有碰到过这样的问题吗?
------解决方案--------------------
大半是处理逻辑的问题。 应用上得看是否有游标等坑货。
------解决方案--------------------加个重编译选项试下。。
------解决方案--------------------
exec sp_recompile @objname='存储过程名称'
重新编译的数据库本身没有更新此存储过程的执行计划,此时效率可能不高,所以建议lz重新编译一下存储过程
------解决方案--------------------不如根据业务需求重写这个存储过程。
我们看不到存储过程代码,也只能瞎猜,比如是不是用了游标,比如表没有相关索引,等等。