存儲過程的執行計劃在哪裏?當你創建一個存儲過程時,它會創建一個執行計劃,或者在創建任何東西之前你必須運行一次嗎?存儲過程存儲在哪裏?它創建時是否創建執行計劃?
1
A
回答
0
存儲過程體存儲在系統表中。 計劃在每次執行時都被緩存和重用,雖然是的,但首先必須在首次執行時創建。
1
執行計劃是在第一次存儲過程爲運行時創建的 - 並且它存儲在(易失性)計劃緩存中。
如果服務器太忙併且需要空間來存放要緩存的最新執行計劃,或者SQL Server服務已關閉,那麼該緩存將消失,並且下次執行時需要解析該過程,並且執行計劃再次確定。
只需通過創建存儲過程,你是不是存儲任何執行計劃 - 存儲過程並不預編譯之類的東西,因爲民間傳說往往聲稱。那根本就不是這樣。
事實上,在創建存儲過程時,SQL Server甚至不檢查對象是否存在。你可以完全創建一個從不存在的表中選擇的存儲過程 - 它將被創建得很好。該錯誤只發生在運行時 - 一旦執行計劃嘗試第一次構建(當然,當然,表不存在的事實將導致錯誤)
相關問題
- 1. EF6:在哪裏創建存儲過程?
- 2. 創建存儲過程的計劃
- 3. 是否存在創建sysdiagrams表並支持存儲過程的存儲過程?
- 4. 創建主存儲過程
- 5. Magento:創建存儲過程
- 6. 創建存儲過程 - SQL
- 7. Oracle存儲過程的執行計劃
- 8. 存儲過程優化執行計劃?
- 9. 控件在運行時創建後存儲在哪裏?
- 10. db2存儲過程創建行爲
- 11. 創建存儲過程時出錯
- 12. 創建存儲過程時出錯
- 13. 創建存儲過程時出錯
- 14. dbms_scheduler在存儲過程中創建時無法創建作業
- 15. 更改存儲過程是否過期高速緩存的執行計劃?
- 16. 存儲過程從動態sql創建存儲過程
- 17. 如何從存儲過程中創建存儲過程
- 18. 使用存儲過程創建存儲過程
- 19. 執行由不同用戶創建存儲過程在DBLINK
- 20. 在informix中創建存儲過程
- 21. 在MS Access中創建存儲過程?
- 22. 創建存儲過程在MySQL
- 23. 在mysqladmin中創建存儲過程?
- 24. 在SQL Server中創建存儲過程
- 25. 創建存儲過程在Access 2007
- 26. 在MySQL Workbench中創建存儲過程
- 27. 創建存儲過程在MySQL每批
- 28. 創建一個存儲過程,如果它不存在
- 29. 從Netbeans創建Derby數據庫時存儲在哪裏?
- 30. 是否有可能在Firebird中創建私有存儲過程?
還有WITH REPOMPILE選項,每次SP運行時都會強制重新創建執行計劃。 – Artemix