如何获取真实的执行计划

 验证 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事件获取真实的执行计划

时间: 2024-11-05 06:07:14

如何获取真实的执行计划的相关文章

使用 EXPLAIN PLAN 获取SQL语句执行计划

     SQL查询语句的性能从一定程度上影响整个数据库的性能.很多情况下,数据库性能的低下差不多都是不良SQL语句所引起.而SQL语句的执行 计划则决定了SQL语句将会采用何种方式从数据库提取数据并返回给客户端,本文描述的将是如何通过EXPLAIN PLAN 获取SQL语句执行计划来获 取SQL语句的执行计划. 一.获取SQL语句执行计划的方式     1. 使用explain plan 将执行计划加载到表plan_table,然后查询该表来获取预估的执行计划      2. 查询动态性能视图

[20161216]toad下显示真实的执行计划.txt

[20161216]toad下显示真实的执行计划.txt --大家都应该知道使用explain plan看执行计划,有时候显示的执行计划不是真实的执行计划.现在我虽然使用它看,仅仅作为参考. --昨天看链接: http://www.toadworld.com/platforms/oracle/b/weblog/archive/2016/12/13/toad-explain-plan-tip-returning-actual-sql-execution-explain-plan --才知道toad

Oracle中获取执行计划的几种方法分析

以下是对Oracle中获取执行计划的几种方法进行了详细的分析介绍,需要的朋友可以参考下   1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下: explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下: select * from table(

Oracle中获取执行计划的几种方法分析_oracle

1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下:explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下:select * from table(dbms_xplan.display);注意:Explain plan只生成执行计划,并不会真正

如何获取SQL执行计划

*********************************************************** ----1:获取"刚刚"的执行计划display_cursor *********************************************************** Explain plan命令在Oracle中,可以对后面的SQL语句进行直接的解析,将执行计划保存在一个plan_table的中间表中.之后通过dbms_xplan包的方法进行获取. s

MongoDB执行计划获取(db.collection.explain())

在RDBMS中,无论那种数据库,都提供了SQL剖析工具,用来解决SQL效率低下的问题.在MongoDB中,也有相应的策略来实现剖析.MongoDB提供了db.collection.explain()方法, cursor.explain()方法,和explain命令去返回查询计划信息和查询计划的执行统计信息.这为我们诊断查询提供了极大的便利,本文主要描述db.collection.explain()的相关用法. 一.db.collection.explain()简介 支持下列操作返回查询计划 ag

执行计划中各字段各模块描述

      在SQL语句的执行计划中,包含很多字段项和很多模块,其不同字段代表了不同的含义且在不同的情形下某些字段.模块显示或不显示,下面的描述给出了执行计划中各字段的含义以及各模块的描述.        有关执行计划中各字段模块的描述请参考: 执行计划中各字段各模块描述        有关由SQL语句来获取执行计划请参考:     使用 EXPLAIN PLAN 获取SQL语句执行计划        有关使用autotrace来获取执行计划请参考:启用 AUTOTRACE 功能       有

Oracle查看执行计划的几种方法

Oracle查看执行计划的几种方法   一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性.启用AUTOTRACE后,SQL*Plus会自动收集执行过的SQL语句的执行计划.性能统计数据等,并在语句执行结束后显示在SQL*Plus中. DBA用户可以直接使用AUTOTRACE功能,但是如果用户没有DBA权限,那么需要在SYS用户下执行plustrce.sql脚本,自动创建PLUSTRACE角色,再把PL

RDS SQL Server - 专题分享 - 巧用执行计划缓存之执行计划编译

背景引入 执行计划缓存是SQL Server内存管理中非常重要的特性,这篇文章是巧用执行计划缓存系列文章之五,探讨如何从执行计划缓存中获取查询语句执行计划编译的性能消耗,比如: 编译时间消耗 编译CPU消耗 编译内存消耗 缓存大小消耗 等等一系列非常有价值的统计信息. 什么是执行计划编译 SQL查询语句在提交到SQL Server主机服务之后,数据查询访问动作发生之前,SQL Server的编译器需要将查询语句进行编译,然后查询优化器生成最优执行计划.而这个编译和最优执行计划选择的过程,