首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

而SQL语句执行 计划则决定了SQL语句将会采用何种方式从数据库提取数据并返回给客户端,本文描述的将是如何通过EXPLAIN PLAN 获取SQL语句执行计划来获 取SQL语句执行计划。...一、获取SQL语句执行计划的方式      1. 使用explain plan执行计划加载到表plan_table,然后查询该表来获取预估的执行计划      2....使用Toad工具来获取执行计划  下面主要讨论使用explain plan获取执行计划的方法 二、explain plan工作实质、前提及操作方法      1....工作实质       将SQL语句预估的执行计划加载到表plan_table,是对表plan_table 执行了DML操作,故不会执行隐式提交       可以对select,insert,update...plan并不执行当前的SQL语句,而是根据数据字典记录的统计信息获取最佳的执行计划并加载到表plan_table。

1.2K50

【MySQL】执行计划 explain 及 一条select语句在MySQL的奇幻之旅

文章目录 示例 解释 一条select语句在MySQL的奇幻之旅 示例 explain select * from emp; 解释 列(Column) 含义(Meaning) id The SELECT...identifier(每个select子句的标识id) select_type The SELECT type(select语句的类型) table The table for the output...:用于where的in查询,完全替换子查询,效率更高。...语句为value IN (SELECT primary_key FROM single_table WHERE some_expr) index_subquery:子查询的返回结果字段组合是一个索引(...:对数据使用一个外部的索引排序 Using index condition:使用了索引下推 一条select语句在MySQL的奇幻之旅 注:MySQL8.0起以取消图中第九步(查询缓存)原因:把查询语句作为

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

一文搞懂select语句在MySQL执行流程!

好了,今天我们就一起来聊聊select语句是如何在MySQL执行的。文章的主要内容如下。 ?...接下来,我们就以这条SQL语句为例,说说select语句是如何在MySQL执行的。...登录MySQL后,客户端就会与MySQL建立连接,此时执行select语句时,首先会到查询缓存查询是否执行过当前select语句。...如果之前执行过相应的select语句,则执行过的select语句和查询结果会以key-value的形式存放在查询缓存,其中,key是查询语句,value是查询的结果数据。...如果开启了慢查询的话,执行select语句时,会在慢查询日志输出一个rows_examined字段,这个字段表示select语句执行的过程扫描了数据表的多少行数据。

3.8K20

【DB应用】SQL执行计划简述

而SQL语句执行 计划则决定了SQL语句将会采用何种方式从数据库提取数据并返回给客户端,本文描述的将是如何通过EXPLAIN PLAN 获取SQL语句执行计划来获 取SQL语句执行计划。...一、获取SQL语句执行计划的方式 使用explain plan执行计划加载到表plan_table,然后查询该表来获取预估的执行计划 查询动态性能视图vsql_plan,vsql_plan_statistics...,v 查询自动工作量资料库(Automatic Workload Repository)或查询Statspack,即从资料库获取执行计划 启用执行计划跟踪功能,即autotrace功能 使用PL/SQL...工作实质 将SQL语句预估的执行计划加载到表plan_table,是对表plan_table 执行了DML操作,故不会执行隐式提交 可以对select,insert,update,merge,delete...使用方法: explain plan for select * from scott.emp where ename='SCOTT'; --未设置标记位 explain

47870

【DB笔试面试597】在Oracle,获取执行计划有哪几种方法?

启用AUTOTRACE后,SQL*Plus会自动收集执行过的SQL语句执行计划、性能统计数据等,并在语句执行结束后显示在SQL*Plus。...在发生INSERT、DELETE、UPDATE和SELECT FOR UPDATE的时候,数据库缓冲区的数据库块的个数。在SELECT语句中一般为0。...2、EXPLAIN PLAN FOR方式 SQL> EXPLAIN PLAN FOR SELECT * FROM T017_LHRO; SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY...ON EXPLAIN包含SQL语句执行结果、SQL语句执行结果的数量和执行计划无有有无无无SET AUTOTRACE ON STATISTICS包含SQL语句执行结果、SQL语句执行结果的数量和统计信息内容有有有无无无...PLAN命令,对于SELECT语句不会执行,只显示目标SQL的执行计划,但是对于DML语句还是会执行的,而且显示SQL语句执行结果的数量和执行计划否无有有无无无SET AUTOTRACE TRACEONLY

55910

【DB笔试面试598】在Oracle,如何得到真实的执行计划?

♣ 题目部分 在Oracle,如何得到真实的执行计划?...♣ 答案部分 在Oracle数据库判断得到的执行计划是否准确,就是看目标SQL是否被真正执行过,真正执行过的SQL所对应的执行计划就是准确的,反之则有可能不准,因此,通过10046事件及如下的几种方式得到的执行计划是最准确的...TABLE(DBMS_XPLAN.DISPLAY_AWR('sql_id')); 这里需要注意的是,虽然SQL*Plus的AUTOTRACE功能有部分是真实执行了SQL语句的(例如所有DML语句),...那么,为什么EXPLAIN PLAN命令里显示的预估执行计划与该SQL真实的执行计划不一样呢?...④ 统计信息收集参数:Explain Plan始终是用最新的统计信息产生执行计划,但是,Runtime Plan不一定会用最新的统计信息。因此也会产生执行计划差异。

64220

【DB笔试面试612】在Oracle,查询转换包含哪些类型?

♣ 答案部分 在Oracle数据库,用户发给Oracle让其执行的目标SQL和Oracle实际执行的SQL有可能是不同的,这是因为Oracle可能会对执行的目标SQL做等价改写,即查询转换。...关于上表的内容需要注意以下几点: ① 子查询展开通常都会提高原SQL的执行效率,因为如果原SQL不做子查询展开,那么通常情况下该子查询就会在其执行计划的最后一步才被执行,并且会走FILTER类型的执行计划...,这也就意味着对于外部查询所在结果集的每一条记录,该子查询就会被执行多少次,这种执行方式的执行效率通常情况不会太高,尤其在子查询包含两个或两个以上表连接时,此时做子查询展开后的执行效率往往会比走FILTER...--- -- TRUE:仅调用EXPLAIN PLAN命令解析语句 --- -- FALSE:执行语句后从缓存获得执行计划 ---...plan for '||stmt; for xpl_rec in ( select * from table(dbms_xplan.display(null,null,format)) ) loop

1.3K20

尝鲜ClickHouse原生EXPLAIN查询功能

在之前的一篇文章,我曾经介绍过如何借助 ClickHouse 的服务日志查看 SQL 执行计划,从而变相达到 EXPLAIN 查询的目的。...在先前的方法,由于 CH 没有原生的 EXPLAIN 查询,所以如果想要看到执行计划,那么 SQL 语句必须被真正的执行,所以这种方法只能作为一种事后分析,有着明显的缺点。 现在,事情有了转机。...PLAN PLAN是最常用的功能,即查看 SQL 执行计划,例如执行: EXPLAIN PLAN SELECT 1: Union Expression (Projection) Expression...PLANEXPLAIN 的默认值,所以 PLAN 修饰词可以省略,现在我们换条复杂一点的 SQL,执行: EXPLAIN SELECT database, table,...EXPLAIN PLAN 目前还可以设置 3 个参数,它们分别是: header,打印计划各个步骤的 head 说明,默认关闭; description,打印计划各个步骤的描述,默认开启; actions

6.1K52

【MySQL高级】优化SQL步骤

state描述的是语句执行的某一个状态。...3.3 explain分析执行计划 通过以上步骤查询到效率低的 SQL 语句后,可以通过 EXPLAIN或者 DESC命令获取 MySQL如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序...查询SQL语句执行计划 : explain  select * from tb_item where id = 1; explain  select * from tb_item where title...之 id id 字段是 select查询的序列号,是一组数字,表示的是查询执行select子句或者是操作表的顺序。...或 WHERE 列表包含了子查询 DERIVED 在FROM 列表包含的子查询,被标记为 DERIVED(衍生) MYSQL会递归执行这些子查询,把结果放在临时表 UNION 若第二个SELECT

65422

【DB笔试面试605】在Oracle,SQL概要(SQL Profile)的作用是什么?

使用SQL Profile的两个目的:①锁定或者说是稳定执行计划。②在不能修改应用的SQL的情况下使SQL语句按指定的执行计划运行。...SQL Profile最大的优点是在不修改SQL语句和会话执行环境的情况下去优化SQL的执行效率,适合无法在应用程序修改SQL时。...查看SQL默认执行计划,走了索引,通过指定Outline可以获取到系统为我们生成的hint LHR@dlhr> explain plan for select * from TB_LHR_20160525...如果我们想让它走全表扫描,首先获取全表扫描HINT LHR@dlhr> explain plan for select /*+ full(TB_LHR_20160525) */* from TB_LHR...查看是否生效,已经生效了: LHR@dlhr> explain plan for select * from TB_LHR_20160525 where object_id= :a; Explained

88910

一学就会的获取SQL执行计划和性能统计信息的方法

AUTOTRACE使用方法 AUTOTRACE具体使用方法方法如下: 1.要使用AUTOTRACE命令,也需要首先创建执行计划表PLAN_TABLE(一般数据库默认已经建好)。...SQL> set autotrace traceonly explain SQL> select * from dual; Execution Plan ----------------------...SQL的数量;执行SQL语句时生成的内部SQL语句,称为递归调用。...10 sorts (disk) 至少需要写入一次磁盘的排序操作数 11 rows processed 操作处理的行数 注意点 当指定参数TRACEONLY时: SQL语句会真正执行; 不会显示执行结果...; 只会显示统计信息和执行计划 当指定参数TRACEONLY EXPLAIN时: SQL语句不会真正执行; 不会显示执行结果; 只会显示执行计划,不会显示统计信息。

78810

PostgreSQL查询当前执行SQL的执行计划——pg_show_plans

因此,在PG里:前5次执行预备语句,每一次都产生新的执行计划,叫做custom plan;第6次再执行时,会生成一个不依赖于参数的执行计划并保存下来,叫做generic plan。...之后每执行一个预备语句,也都会产生一个相对应的custom plan。...custom plan是指对于preapre语句,在执行execute的时候,把execute语句中的参数嵌套到语句之后生成的计划。...generic plan是指对于preapre语句生成计划,该计划策略会在执行execute语句的时候把参数bind到plan,然后执行计划。...但是explain查询当前缓存的执行计划,在实际估算的成本可能是不准确的,因为很可能估算的成本和实际运行的成本不一致。

2.6K40

dbms_xplan之display函数的使用

本文主要描述DBMS_XPLAN包display函数的使用,尽管可以通过SQL语句来查询缺省表plan_table来获得执行计划, 事实上,使用display函数更便捷,且display函数提供了多种不同的显示格式...有关执行计划各字段模块的描述请参考: 执行计划各字段各模块描述         有关由SQL语句来获取执行计划请参考:     使用 EXPLAIN PLAN 获取SQL语句执行计划         ...(演示版本Oracle 10g R2)     1、使用EXPLAIN PLAN加载预估的执行计划        SQL> EXPLAIN PLAN SET STATEMENT_ID='TSH'...3、当所有参数为null的情况下,显示执行计划表(缺省为plan_table)最后一条语句执行计划         4、尽管可以通过SQL语句查询plan_table来获取执行计划,建议直接使用display...函数,这足够说明一切问题             5、当SQL语句中使用了绑定变量时,由explain plan获得的执行计划是不可靠的

1.3K20

优化查询性能(三)

SQL EXPLAIN命令可用于生成XML格式的查询计划,还可以选择生成备选查询计划和SQL统计信息。所有生成的查询计划和统计信息都包含在名为Plan的单个结果集字段。...执行计划:语句文本和查询计划 显示计划执行计划由两个组件组成,即语句文本和查询计划: 语句文本复制了原始查询,但进行了以下修改:管理门户SQL界面的显示计划按钮显示删除了注释和换行符的SQL语句。...“Read master map”作为主模块的第一个项目符号表示查询计划效率低下。查询计划使用以下映射类型语句之一开始执行Read master map......在这些情况下,Show Plan不显示语句文本,而Query Plan[没有为该语句创建的计划]。这通常发生在分隔文字的引号不平衡时。...从例程导出SQL查询时,例程代码SQL语句之前的任何#import行也将位于导出文件的SQL文本之前。

1.2K20

使用SQL Shell界面(三)

EXPLAIN and Show Plan有两种方式显示SQL查询的查询计划; 如果需要,两者都可以显示备用的查询计划。EXPLAIN:前言用解释命令选择SELECT查询。...例如:SQL]USER>>EXPLAIN SELECT Name FROM Sample.MyTable WHERE Name='Fred Rogers'SHOW PLAN:发出查询,然后发出show...EXPLAIN只能用于返回选择查询的查询计划;它不会返回用于执行查询操作的Insert,Update或DELETE语句等其他命令的查询计划。...这包括生成和编译语句所花费的时间。 它包括在语句缓存查找语句所花费的时间。 因此,如果执行了一条语句,然后按编号或名称回收,回收语句的准备时间接近于零。...RUN加载脚本文件,然后准备并执行文件包含的每个语句。 脚本文件语句必须分隔,通常用GO行或分号(;)分隔。 RUN命令提示指定分隔符。

85320

读书笔记-《基于Oracle的SQL优化》-第二章-1

2.2 如何查看执行计划 (1)、explain plan命令 按F5,PL/SQL Developer就调用explain plan命令,F5只是explain plan命令上的一层封装而已。...语法: explain plan for + 目标SQL select * from table(dbms_xplan.display) 执行explain plan命令,则Oracle就将解析目标SQL...(4)、10046事件 和explain plan、dbms_xplan和autotrace开关不同之处:所得到的的执行计划明确显示了目标SQL实际执行计划每一个执行步骤所消耗的逻辑读、物理读和花费的时间...当使用SET AUTOTRACE TRACEONLY EXPLAIN时,如果执行的是SELECT语句,则并没有被实际执行,如果执行的是DML语句,会被Oracle实际执行。...使用SET AUTOTRACE ON、SET AUTOTRACE TRACEONLY和SET AUTOTRACE TRACEONLY EXPLAIN来获得DML语句执行计划时要小心,因为这些DML语句实际已经被执行过了

89430
领券