Oracle SQL语句执行计划

本文详细介绍了Oracle数据库中查看SQL语句执行计划的各种方法,包括使用EXPLAIN PLAN、V$SQL_PLAN、AutoTrace、SQL_TRACE等,并探讨了影响执行计划的因素及如何更新统计信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看Oracle SQL语句执行计划

方法一:

1、explain plan for select * from emp where empno=7369;  --解释执行计划,实际上未必执行。

2、select  * from table(dbms_xplan.display);或者 select * from table(dbms_xplan.display());或者select * from table(dbms_xplan.display(null,null,'basic rows bytes'))

方法二:

查看V$SQL_PLAN     --已经缓存的执行计划(实际执行)

方法三:AutoTrace

set autotrace on;    --从plan_table中读取的

执行的语句。

set autotrace off;

方法四:SQL_TRACE 10046跟踪事件。

方法五:10053跟踪事件。

方法六:select  * from table(dbms_xplan.display_cursor(null,null,'allstats last'));  -- (实际执行)可用命令 desc dbms_xplan 查看参数 第一个参数 SQL_ID,第二个参数 CURSOR_CHILD_NO  第三个参数 FORMAT。可使用提示 gather_plan_statistics 提示Oracle收集信息。 select /*+ gather_plan_statistics*/* from AA t; 

方法七:SQL监控报告:monitor 和 no_monitor 默认监视执行时间超过5秒的SQL语句,如果要监控执行时间小于5秒的SQL语句需要加monitor提示。

select /*+ monitor*/* from AA t;

select dbms_sqltune.report_sql_monitor() from dual;


影响SQL语句执行计划的因素--统计信息过期处理。

exec dbms_stats.gather_table_stats(ownname => 'owner',tabname => 'table_name' ,estimate_percent => 100 ,method_opt => 'for all columns size auto' ,cascade => true);   --for all columns size auto 会收集列上的直方图信息。

analyze table table_name compute statistics for table for all indexes for all indexed columns;

例子如下:

exec dbms_stats.gather_table_stats(ownname => 'scott',tabname => 'A' ,estimate_percent => 100 ,method_opt => 'for all columns size auto' ,cascade => true);


analyze table scott.a compute statistics for table for all indexes for all indexed columns;


select * from dba_autotask_client; -- Oracle 11g 默认有自动收集统计信息的任务。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值