验证 set autotrace查看DML语句的执行计划会被实际执行

很多时候我们总是喜欢使用set autotrace on、set autotrace traceonly和set autotrace traceonly explain这种方式来查看目标SQL的执行计划,但是你知道吗?autotrace方式查看执行计划,如果目标SQL是DML语句会被实际执行。
先测试select 


通过上述,可以证明在 set autotrace 语句执行select不会实际执行。

我们在来看下当使用set autorace on时,执行DML语句会怎么样?


可以看出,DML语句已经被实际执行。

继续接着上述实验,我们看下set autotrace traceonly时,执行insert会怎么样?

同样也可以看到insert语句也被实际执行了。

我们再来验证下set autotrace traconly explain查看DML语句的执行计划是否会被实际执行:

同样我们可以看到DML语句已被实际执行。

从上述的例子我们可以看出使用set autotrace后执行DML语句,该DML会被实际执行。所以在使用set autotrace来获取DML语句的执行计划时要特别小心,因为这些DML会被实际执行。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.