2024-02-03
oracle 怎么看已经执行过的sql的执行计划?在sql的执行过程中,每一步所花费的时间呢?
oracle 怎么看已经执行过的sql的执行计划?在sql的执行过程中,每一步所花费的时间呢?
我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
oracle 怎么看已经执行过的sql的执行计划?在sql的执行过程中,每一步所花费的时间呢?
楼上回答的第一句话是错误的. explain plan for不是用来查看已经执行过的SQL的执行计划,而是用来预估SQL的执行计划,SQL并没有执行.
已经执行过的SQL, 如果还在内存, 可以用select * from table(dbms_xplan.display_cursor())命令查看;
如果保存到了awr,可以用select * from table(dbms_xplan.display_awr())命令查看;
如果SQL被sql monitor捕获,也可以用select DBMS_SQLTUNE.REPORT_SQL_MONITOR() from dual;得到sql monitor显示形式的执行计划.
默认情况下, 执行计划显示的时间都是估算的,不能说完全不可信,大部分情况与实际相差较大.
如果要调试SQL, 一般要先alter session set statistics_level=all,或者在sql 中使用 /*+ gather_plan_statistics */的hint, 再配合dbms_xplan.display_cursor方法,得到真实的每一步所花费的时间.
评论
有用 9
在Oracle中,可以使用EXPLAIN PLAN FOR语句来查询已经执行过的SQL的执行计划。
在SQL执行过程中,每一步所花费的时间可以通过Oracle提供的执行计划来查看。执行计划是数据库优化器为SQL语句生成的一系列执行操作的顺序。通过查看执行计划,可以了解SQL语句的执行步骤、每个步骤的执行顺序以及每个步骤所花费的时间。
在Oracle中,可以使用EXPLAIN PLAN FOR语句来查看SQL语句的执行计划。执行计划会显示一系列的操作符,每个操作符表示一个执行步骤,并显示该步骤的名称、行数估算、成本等信息。通过分析这些信息,可以了解每个步骤所花费的时间,从而优化SQL语句的执行效率。
评论
有用 9
墨值悬赏