.NET調用存儲過程時,有時候會變的很慢甚至會timeout,但是再執行一下存儲過程,再調用就會很快。
解決辦法:
1. 在可能比較耗時的語句后面加上option(recompile)
2. 創建存儲過程時在其定義中指定 WITH RECOMPILE 選項,表明 SQL Server 將不對該存儲過程計划進行高速緩存;該存儲過程將在每次執行時都重新編譯。當存儲過程的參數值在各次執行間都有較大差異,導致每次均需創建不同的執行計划時,可使用 WITH RECOMPILE 選項。此選項並不常用,因為每次執行存儲過程時都必須對其進行重新編譯,這樣會使存儲過程的執行變慢。
在執行存儲過程時指定 WITH RECOMPILE 選項,可強制對存儲過程進行重新編譯。僅當所提供的參數不典型,或者自創建該存儲過程后數據發生顯著更改時才應使用此選項。