如何获取真实的执行计划

简介:  验证 explain plan命令   与  set autotrace命令  是否为真实执行计划       0  CONN /AS SYSDBA;              1  create table t1 as select * from dba_objects;           2  insert into t1 select * from t1;     

 验证 explain plan命令   与  set autotrace命令  是否为真实执行计划

      0  CONN /AS SYSDBA;     

 

      1  create table t1 as select * from dba_objects;

   

      2  insert into t1 select * from t1;

 

      3   commit;

 

      4   select count(1) from t1;

 

      5   create index idx_t1 on t1(object_id);

        --收集统计信息

      6   exec dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'T1',estimate_percent=> 100,cascade=> true);

      

      7   select * from table(dbms_xplan.display);

 

      

 

     

      8 

    

VAR X NUMBER;

VAR Y NUMBER;

EXEC :X :=0;

EXEC:Y :=100000;

 

        --explain命令

        EXPLAIN  PLAN FOR SELECT count(*) from t1 where object_id between :x and :y;

 

        select * from table(dbms_xplan.display);

 

       

 

          显示走idx_t1索引范围(range)扫描

 

        select count(*) from t1 where object_id between :x and :y;

 

        --dbms_xplan.display_cursor(null,null,'ADVANCED')  得到真实执行计划

        select * from table(dbms_xplan.display_cursor(null,null,'ADVANCED'));

 

 

 

 

 

        

Index fast full  快速全扫描

 

 

---set autotrace traceonly 验证

 

Set autotrace traceonly

Select count(*) from t1 where object_id between :x and :y;



 

 显示走idx_t1索引范围(range)扫描

 

结论:使用set autotrace,set autotrace 源于explain plan是不准确的,特别是绑定变量下查询是不准确的

-dbms_xplan.display_cursor(null,null,'ADVANCED') 

和10046事件获取真实的执行计划




目录
相关文章
|
SQL 关系型数据库 MySQL
MySQL查询连续打卡信息?
最近多次看到用SQL查询连续打卡信息问题,自己也实践一波。抛开问题本身,也是对MySQL窗口函数和自定义变量用法的一种练习。
373 0
MySQL查询连续打卡信息?
|
传感器 存储 安全
ADAS如何获取和记录数据
ADAS如何获取和记录数据
ADAS如何获取和记录数据
|
SQL 索引 Go
通过手动创建统计信息优化sql查询性能案例
原文:通过手动创建统计信息优化sql查询性能案例 本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息   来源于工作中的一个实际问题, 这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选择合理的执行计划导致性能低下的情况 我...
851 0
|
SQL 算法 索引
SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)
原文:SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)   本文出处:http://www.cnblogs.com/wy123/p/6008477.html    关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里。
1061 0
|
SQL Oracle 关系型数据库
SQL为什么预估执行计划与真实执行计划会有差异?
SQL为什么预估执行计划与真实执行计划会有差异?http://www.bieryun.com/3149.html 一 问题概要 对同一个 SQL 语句的 ExplainPlan 里显示的预估执行计划与通过 V$SQL_PLAN 视图获取的 Runtime Plan 真实执行计划,偶尔会发现两边有不一致的情况,为什么呢?为什么预估执行计划会不准确?怎样才能避免这种情况的发生? 二 问题解答 这是执行计划相关中会被经常问道的问题,也是困扰自己很长时间的问题。
1501 0

热门文章

最新文章