今天碰到一個很奇怪的問題,關於存儲過程,幾下以後用
一個存儲過程。內容就不寫了。
問題:在查詢分析器上執行速度很快,幾乎幾秒鐘就可以完成!而在程序裏執行需要很久,甚至不能完成!(已排除代碼問題)還導致瀏覽器卡死。
解決方法:修改存儲過程名稱。
猜想:應該是存儲過程執行過期導致,存儲過程是預編譯的, 在第一次執行的時候, 會生成執行計劃, 以後執行的時候, 會使用這個執行計劃(除非存儲過程侯或者顯示指定重新編譯), 而不是每次執行時都去生成執行計劃
當存儲過程涉及的對象結構調整, 或者相關的數據產生了很大變化, 這可能導致原來的計劃不適合當前的現狀(執行計劃過期), 這種情況下應該重新編譯存儲過程(可以通過 sp_recompile來標記要重新編譯的存儲過程)