1

Where is the execution plan for a stored procedure stored at? When you create a stored procedure does it create an execution plan then or do you have to run it once before anything is created?

4

2 回答 2

1

执行计划是在存储过程第一次运行时创建的- 它存储在(易失性)计划缓存中。

如果服务器太忙并且需要空间来缓存更新的执行计划,或者如果 SQL Server 服务关闭,则该缓存将消失,并且下一次需要解析该过程并再次确定执行计划.

仅仅通过创建存储过程,您就不会存储任何执行计划——存储过程不是预编译的或类似的东西,正如民间传说经常声称的那样。事实并非如此。

事实上,在您创建存储过程时,SQL Server 甚至不会检查对象是否存在。您完全可以创建一个从不存在的表中选择的存储过程 - 它会被创建得很好。该错误仅在运行时发生 - 一旦第一次尝试构建执行计划(当然,此时表不存在的事实将导致错误)

于 2013-04-12T15:48:59.357 回答
0

存储过程主体存储在系统表中。该计划在每次执行时都会被缓存和重用,虽然是的,但首先必须在第一次执行时创建它。

于 2013-04-12T15:20:48.117 回答