SP的exec与运行sp语句之间的巨大性能差异通过相同SP的alter query(不做任何更改)来解决

时间:2014-06-02 12:34:14

标签: sql sql-server

今天我遇到了一个有趣的问题,即我们的8人软件团队中没有人见过。

  

EXEC FirmSearch 1,1

那个简单的sp需要45秒。每次执行。在存储过程中运行完全相同的语句只需不到1秒。我创建具有相同功能的FirmSearchV2。然后:

  

EXEC FirmSearchV2 1,1

FirmSearchV2花了不到1秒的时间。我试图执行FirmSearch sp的修改查询(没有任何更改),问题就消失了。现在,FirmSearch在不到1秒的时间内执行。 我正在使用MsSql 2008。

出现此问题的可能原因是什么?

1 个答案:

答案 0 :(得分:2)

我不知道sql-server所以这可能是完全错误的,但是在另一个DBMS存储过程中使用创建sp时存在的统计信息进行编译。也就是说,如果数据变化很大,则为sp编译的访问计划可能是次优的。这可以解释为什么重新创建sp可以提高性能。检查是否有任何可以重新编译sp的实用程序,而无需重新编译它。