有3種方法可以重新編譯
1. 在床架儲存過程是使用with recompile子句
with recompile 子句可以指示sql server2005 不將該儲存過程的查詢計畫儲存在快取中,而是在每次執行時重新編譯和優化,並建立新的查詢計畫。
use book
gocreate procedure p_book1p
@出版社 varchar(20)
with recompile
as select * from book1 where 出版社= @出版社
這種方法並不常用,因為在每次執行儲存過程時都要重新編譯,在整體上降低了存儲存過程的執行速度,除非儲存過程本省市乙個比較複雜、耗時的操作。
2. 在執行儲存過程時設定重新編譯選項
通過在執行儲存過程時設定重新編譯,可以讓sql server2005 在執行儲存過程是重新編譯該儲存過程,在這一次執行後,心的查詢計畫又被儲存在快取中。
exec procedure_name with recompile
3. 通過系統儲存過程設定重新編譯選項
exec sp_recompile object
其中,object 當前資料庫中的儲存名稱,表活試圖名稱。
例: exec sp_recompile book
注意細節 儲存過程的重編譯
我們都知道,當儲存過程引用的表改變時,sql server 會重新編譯該儲存過程。但是當我們增加乙個有助於儲存過程執行效率的索引時,sql server 卻不會重新編譯該儲存過程。只有當儲存過程快取記憶體被沖刷時 sql server 重新啟動 儲存過程才會被重新編譯。如果想要強制編譯乙個儲存過程,...
oracle儲存過程不能編譯問題處理
1.登陸sys使用者,在pl sql選擇 tools sessions,會列出各個session的具體資訊 2.執行sql語句 select from v session t where t.action like test 找到當前進行儲存過程除錯的session,然後執行kill命令 alter...
在Oracle中重編譯所有無效的儲存過程
sql plus中,spool execcompproc.sql select alter procedure object name compile from all objects where status invalid and object type procedure spool off ...