oracle怎么查看执行计划
前言
本文主要讲oracle数据库三种查看执行计划的方式,无水文,直接上干货。
方式一:通过数据库连接工具来查看
基本上所有数据库连接工具都支持我们查看sql的执行计划,这里就使用sqlplus图形化工具以及DBeaver
来进行演示
(一) sqlplus图形化工具
双击选中要查看执行计划的sql,然后点击【工具】-【解释计划】就可以开启一个解释计划窗口,这个窗口会展示具体的执行计划。
(二)DBeaver工具
双击选中要查看执行计划的sql,然后点击【SQL编辑器】-【解释执行计划】就可以看到具体的执行计划了
方式二:在sqlplus中使用dbms_xplan
查看执行计划
方式一本质上应该就是对方式二的封装,如果在手头没有数据库图形化连接工具的话,可以用这种方式来查看执行计划。第一条sql的作用是获取执行计划,但这个结果并不会输出出来,我们需要结合dbms_xplan
来进行查看。
explain plan for select * from table1
select * from table(dbms_xplan.display);
方式三:使用set autotrace on
在sqlplus中使用set autotrace on
命令,后续的所有sql一致性就会输出包含执行计划、执行结果、静态统计数据在内的所有数据。
需要注意的是,方式三和前两种方式最大的不同点就是它不仅会输出执行计划,还会输出执行结果,也就是说要等到sql完全执行后,才有最终的结果输出出来。
我们还可以通过其他语句来开启sqlplus不同的输出结果。
set autotrace on (得到执行计划,输出执行结果)
set autotrace traceonly (得到执行计划,不输出执行结果)
set autotrace traceonly explain (得到运行计划,不输出运行结果和统计信息部分,仅展现运行计划部分)
set autotrace traceonl statistics(不输出执行结果和执行计划部分,仅展现统计信息部分)
ps:这个命令笔者试过后应该只是在当前会话有效,退出会话后就无效了。
小结
一般来说,有数据库连接工具就优先用连接工具看就行了,图形化界面简单易操作。如果需要更加详细的信息(详细到输出并行度等数据),那么建议使用方式三来查看。