Sql server 存储过程存储在哪里?当您创建执行计划时,它是否创建了执行计划?

Sql server 存储过程存储在哪里?当您创建执行计划时,它是否创建了执行计划?,sql-server,stored-procedures,Sql Server,Stored Procedures,存储过程的执行计划存储在哪里?当您创建存储过程时,它会创建执行计划吗?还是在创建任何内容之前必须运行它一次?存储过程主体存储在系统表中。 计划在每次执行时都会被缓存和重用,但首先必须在第一次执行时创建它。存储过程主体存储在系统表中。 计划在每次执行时都会被缓存和重用,但首先必须在第一次执行时创建它。执行计划是在存储过程第一次运行时创建的,并且存储在(易失性)计划缓存中 如果服务器太忙,需要空间来缓存最近的执行计划,或者如果SQL server服务关闭,则缓存将消失,下次需要解析该过程并再次确定执

存储过程的执行计划存储在哪里?当您创建存储过程时,它会创建执行计划吗?还是在创建任何内容之前必须运行它一次?

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

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

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

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

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


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

执行计划在存储过程第一次运行时创建,并存储在(易失性)计划缓存中

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

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


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

还有WITH RECOMPILE选项,它将在每次SP运行时强制重新创建执行计划。还有WITH RECOMPILE选项,它将在每次SP运行时强制重新创建执行计划。