加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 存储过程中的临时表将导致重新编译执行计划

发布时间:2020-12-12 07:25:20 所属栏目:MsSql教程 来源:网络整理
导读:如果我在存储过程的定义中创建临时表,然后在完成它们时删除它们会导致重新编译执行计划吗? 对于存储过程每次调用它?任何个人经历? 有什么解释吗? 当在每次调用结束时删除临时表时,执行计划变为无效. SQL Server是否仍然保留执行计划并在下次调用时重用,或
如果我在存储过程的定义中创建临时表,然后在完成它们时删除它们会导致重新编译执行计划吗?

对于存储过程每次调用它?任何个人经历?
有什么解释吗?

当在每次调用结束时删除临时表时,执行计划变为无效. SQL Server是否仍然保留执行计划并在下次调用时重用,或者在每次调用时重新编译它.

解决方法

删除临时表无关紧要.
如果创建了一个表(永久或临时),则重新编译该语句之后的所有语句(即使它们不引用该表).不重新编译使用EXEC调用可执行对象.这是因为SQL Server可以在创建对象后创建计划. (在这种情况下,temp.表.)

您可以使用扩展事件及其sql_statement_recompile或SQL Trace / SQL Server Profiler SQL:StmtRecompile监视重新编译.

>语句开始执行. SP:StmtStarting或SQL:引发StmtStarting
>该声明被重新编译. SQL:引发StmtRecompile. SP:StmtStarting或SQL:再次引发StmtStarting
>声明结束了. SP:StmtCompleted或SQL:引发StmtCompleted

不是整个过程被重新编译,而只是单独的声明.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读