相关疑难解决方法(0)

存储过程的执行计划突然变慢

我试图了解我们在 SQL Server 2000 中遇到的一个问题。我们是一个中等事务性的网站,我们有一个名为的存储过程sp_GetCurrentTransactions,它接受一个客户ID和两个日期。

现在,根据日期和客户,此查询可以返回从零到 1000 行的任何内容。

问题:我们所经历的是,Execution Timeout Expired当特定客户端尝试执行该存储过程时,我们会突然收到许多错误(通常或类似的错误)。所以我们检查了查询,在 SSMS 中运行它,发现它需要 30 秒。所以我们重新编译存储的 proc 并且 -bang- 它现在在 300 毫秒内运行。

我已经和我们的 DBA 谈过了。他告诉我,当我们创建存储过程时,数据库创建了一个查询计划。他说对于那组参数是一个很好的计划,但是如果你向它抛出一组特定的参数,那么该计划将不是该数据的最佳计划,因此你会看到它运行缓慢。

提供给我的选项是将问题查询从存储过程移回动态 SQL,在每次运行时都会创建执行计划。

这对我来说就像是后退了一步,我觉得必须有办法解决这个问题。有没有其他方法来处理这个问题?

任何和所有的回应表示赞赏。

sql-server stored-procedures optimization sql-server-2000

15
推荐指数
2
解决办法
2万
查看次数