1. 程式人生 > >存儲過程被程序和第三方客戶端執行很慢,而sql server management studio執行速度正常

存儲過程被程序和第三方客戶端執行很慢,而sql server management studio執行速度正常

一次 com 客戶 正常 gem class .net 顯示 exec

來自:http://blog.csdn.net/pgbiao/article/details/22388945

原因分析:
由於存儲過程是預編譯的, 在第一次執行的時候, 會生成執行計劃, 以後執行的時候, 會使用這個執行計劃(除非存儲過程侯或者顯示指定重新編譯), 而不是每次執行時都去生成執行計劃。
當存儲過程涉及的對象結構調整, 或者相關的數據產生了很大變化, 這可能導致原來的計劃不適合當前的現狀(執行計劃過期), 這種情況下應該重新編譯存儲過程。

解決方法:

1、手動重編譯:

exec sp_recompile @objname=‘存儲過程名稱‘

2、如果是執行頻率不高的存儲過程,可以在腳本中設置每次執行自動重編譯,如:

ALTER PROC [dbo].[存儲過程名稱]
@bDate DATETIME,
@eDate DATETIME
WITH recompile -- 設置重編譯避免程序調用超時
AS
BEGIN

存儲過程被程序和第三方客戶端執行很慢,而sql server management studio執行速度正常