怎么看懂oracle的执行计划
发布网友
发布时间:2022-04-23 20:25
我来回答
共1个回答
热心网友
时间:2022-04-08 19:26
一、什么是执行计划
An explain plan is a representation of the access path that is taken when a query is executed within Oracle.
二、如何访问数据
At the physical level Oracle reads blocks of data. The smallest amount of data read is a single Oracle block, the largest is constrained by operating system limits (and multiblock i/o). Logically Oracle finds the data to read by using the following methods:
Full Table Scan (FTS) --全表扫描
Index Lookup (unique & non-unique) --索引扫描(唯一和非唯一)
Rowid --物理行id
三、执行计划层次关系
When looking at a plan, the rightmost (ie most inndented) uppermost operation is the first thing that is executed. --采用最右最上最先执行的原则看层次关系,在同一级如果某个动作没有子ID就最先执行
1.一个简单的例子:
SQL> select /*+parallel (e 4)*/ * from emp e;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=82 Bytes=7134)
1 0 TABLE ACCESS* (FULL) OF 'EMP' (Cost=1 Card=82 Bytes=7134):Q5000
--[:Q5000]表示是并行方式
1 PARALLEL_TO_SERIAL SELECT /*+ NO_EXPAND ROWID(A1) */ A1."EMPNO"
,A1."ENAME",A1."JOB",A1."MGR",A1."HI
优化模式是CHOOSE的情况下,看Cost参数是否有值来决定采用CBO还是RBO:
SELECT STATEMENT [CHOOSE] Cost=1234--Cost有值,采用CBO
SELECT STATEMENT [CHOOSE] --Cost为空,采用RBO(9I是如此显示的)
2.层次的父子关系的例子:
PARENT1
**FIRST CHILD
****FIRST GRANDCHILD
**SECOND CHILD
Here the same principles apply, the FIRST GRANDCHILD is the initial operation then the FIRST CHILD followed by the SECOND CHILD and finally the PARENT collates the output.
四、例子解说
Execution Plan
----------------------------------------------------------
0 **SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=8 Bytes=248)
1 0 **HASH JOIN (Cost=3 Card=8 Bytes=248)
2 1 ****TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=3 Bytes=36)
3 1 ****TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=16 Bytes=304)
左侧的两排数据,前面的是序列号ID,后面的是对应的PID(父ID)。
A shortened summary of this is:
Execution starts with ID=0: SELECT STATEMENT but this is dependand on it's child objects
So it executes its first child step: ID=1 PID=0 HASH JOIN but this is dependand on it's child objects
So it executes its first child step: ID=2 PID=1 TABLE ACCESS (FULL) OF 'DEPT'
Then the second child step: ID=3 PID=2 TABLE ACCESS (FULL) OF 'EMP'
Rows are returned to the parent step(s) until finished
如何解析oracle执行计划
1、直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果。其中,Cost表示cpu的消耗,单位为n%,Cardinality表示执行的行数,等价Rows。2、先执行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的执行计划了,...
oracle-查看执行计划及sql执行顺序
查看执行计划与顺序查看SQL执行计划时,通常观察执行顺序是从右下角开始,然后逐行向上查看。顺序分析有助于理解Oracle如何优化查询。SQL执行步骤1. 语法分析:首先检查SQL语句是否符合规范,解析表达式意义。2. 语义分析:确保涉及的数据库对象存在且用户具有相应权限。3. 视图与表达式转换:处理视图查询并简化...
如何解析oracle执行计划
执行计划将包含一个根,没有父(操作)父(操作)可以有一个或更多的子(操作),其ID将小于子(操作)ID 一子(操作)可只有一个父(操作),显示时右缩进;含许多子(操作)时,缩进相同 下面是一个执行计划示例。SQL> explain plan for 2 select e.empno, e.ename, d.dname 3 from emp...
查看ORACLE执行计划的几种常用方法
我们首先列出查看执行计划的一些常用方法:1.explain plan命令PL/SQL Developer中通过快捷键F5就可以查看目标SQL的执行计划了。但其实按下F5后,实际后台调用的就是explain plan命令,相当于封装了该命令。explain plan使用方法:(1) 执行explain plan for + SQL(2) 执行select * from table(dbms_xplan....
Oracle SQL优化之执行计划(一)--单表访问index range scan
Oracle SQL优化深入理解执行计划,特别是单表访问的index range scan。执行计划是数据库执行SQL语句的详细步骤分解,它展示了数据库如何将SQL转化为可操作的内部流程,帮助我们理解数据检索方式和执行步骤。在优化中,我们关注的执行计划通常分为单表访问和全表扫描两大类。本文将首先探讨单表访问,如Index ...
python oracle执行计划怎么看
1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。 很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示 2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均可)下执行下面步骤 [sql] view plain copy SQL>EXPLAIN ...
oracle 执行计划 有多个plan
看懂执行计划也就成了SQL优化的先决条件。 这里的SQL优化指的是SQL性能问题的定位,定位后就可以解决问题。 一. 查看执行计划的三种方法 1.1 设置autotrace 序号 命令 解释 1 SET AUTOTRACE OFF 此为默认值,即关闭Autotrace 2 SET AUTOTRACE ON EXPLAIN 只显示执行计划 3 SET AUTOTRACE ON STATISTICS 只显示执行...
oracle 执行计划,有人能跟我解释一下 执行计划里面的 operation字段 的...
执行计划 --- Plan hash value: 2852011669 --- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---
oracle pl/sql 执行计划怎么看
打开PL/SQL Developer软件,请确保plsql能够成功连接到一个oracle数据库。在PL/SQL Developer中写好一段SQL代码,按F5,或者点击“执行执行计划”图标,PL/SQL Developer会自动打开执行计划窗口,显示该SQL的执行计划。可以看到窗口上方是sql语句,下方显示执行计划表格。表格的列主要包含描述、用户、对象、...
oracle sql执行计划怎么分析
1.先查看sql语句的结构,看语句中连接是union,还是等值连接还是左、右连接,再看连接中的表数量。2.查看执行计划中出现异常的部分。3.查看各表的索引情况及表是否是分区的,在where条件上使用的索引列是否正确,看统计分析表中对表的分析结果是否正确 4.分析表的用途,表的数据日增长量。5.分析为什么...