一段时间后,SQL Server存储过程变慢

时间:2016-08-01 06:12:19

标签: sql-server stored-procedures

我在SQL Server中创建了一个存储过程,它在一秒钟内返回数据。这个存储过程可以正常工作几天,之后变得很慢。但是,如果我在不进行更改的情况下重新执行它,它就会变得很快。

我发现Recompile可以解决这个问题。有什么建议吗?

ReCompile也会导致任何性能问题,因为此查询几乎每秒都会出现一次?

1 个答案:

答案 0 :(得分:1)

  

ReCompile也会导致任何性能问题,因为此查询几乎每秒都会被命中一次?

是重新编译会占用CPU资源。即使编译查询计划在几毫秒内完成,这也会增加额外的CPU负担,因为查询不会使用现有的查询计划

  

我开始知道Recomplie可以解决这个问题吗?

SQL Server将使用传递的参数存储查询计划并优化此输入的计划..

假设您有一个表格,每个客户的订单大致相等,那么每次重新编译都不会帮助您..

另一方面,如果您的客户的订单分布不均匀,在1-10000的范围内。在这种情况下,如果SP是使用具有一个订单的客户的输入编译的,那么当10000订单客户通过SQL时将低估内存和可能会溢出到tempdb ..

您可以通过多种方式克服parameter sniffing,尝试阅读我推荐的链接并查看哪个选项适合您

相关问题