存储过程的执行计划存储在哪里?在创建存储过程时,它是创建执行计划,还是在创建任何内容之前必须运行一次?
答案 0 :(得分:1)
执行计划是在存储过程第一次运行时创建的 - 并且存储在(volatile)计划缓存中。
如果服务器太忙并且需要空间来缓存更新的执行计划,或者SQL Server服务被关闭,那么该缓存就会消失,下一次需要解析该过程并执行计划再次确定。
只是通过创建存储过程,您不存储任何执行计划 - 存储过程不是预编译或类似的东西,因为民间传说经常声称。事实并非如此。
事实上,SQL Server甚至不会在您创建存储过程时检查对象是否存在。您可以完全创建一个从不存在的表中进行选择的存储过程 - 它将被创建得很好。该错误仅在运行时发生 - 一旦尝试首次构建执行计划(当然,该表不存在的事实将导致错误)
答案 1 :(得分:0)
存储过程主体存储在系统表中。 每次执行时都会缓存并重用该计划,但是,首先必须在首次执行时创建该计划。