EXPLAIN PLAN FOR:在Oracle中生成执行计划

目录

案例

解析

Operation类型


在Oracle中,可以使用 EXPLAIN PLAN FOR 命令来生成执行计划,然后通过

SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'))来查看执行计划。需要注意的是,这两个命令需要在同一个窗口下运行,否则会报错。

案例

解析

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

当你使用Oracle的EXPLAIN PLAN命令来查看查询的执行计划时,你通常会看到这样的输出。下面是一个简化的解释,帮助你理解每一列的含义:

Id: 这是操作的唯一标识符。它通常用于区分执行计划中的不同步骤。

Operation: 这描述了数据库为了执行查询所采取的具体操作。例如,TABLE ACCESS表示对表的访问,INDEX RANGE SCAN表示对索引的范围扫描,NESTED LOOPS表示嵌套循环连接等。

Name: 这通常显示被访问的表或索引的名称。对于某些操作,如过滤或连接,这一列可能为空。

Rows: 这是数据库估计的该操作将返回的行数。这个数字对于理解查询的性能和效率很重要,因为它可以帮助你识别可能的瓶颈。

Bytes: 这表示该操作预计返回的数据量(以字节为单位)。这可以帮助你估算查询的内存使用和网络传输成本。

Cost (%CPU): 这是Oracle优化器估计的该操作的相对成本。它考虑了各种因素,如磁盘I/O、CPU使用等。百分比CPU表示该操作在CPU上的相对使用率。

Time: 这表示Oracle估计的完成该操作所需的时间(以毫秒为单位)。这可以帮助你了解查询的哪个部分最耗时。

Operation类型

在Oracle的执行计划中,Operation 列表示数据库为了执行查询或DML(如INSERT、UPDATE、DELETE)操作而采取的特定步骤。以下是Operation列中可能出现的一些常见类型及其简要描述:

  1. SELECT STATEMENT: 表示这是一个SELECT查询操作。
  2. TABLE ACCESS: 描述了对表的访问方式。
    1. TABLE ACCESS FULL: 表示进行了全表扫描,即读取了表中的所有行。
    2. TABLE ACCESS BY INDEX ROWID: 表示数据库首先通过索引定位到行ID(ROWID),然后使用这些ID来从表中获取数据。
    3. TABLE ACCESS BY LOCAL INDEX: 类似于上一种,但指的是局部索引。
  3. INDEX ACCESS: 描述了对索引的访问方式。
    1. INDEX RANGE SCAN: 表示对索引的范围扫描,通常用于在索引上应用范围条件。
    2. INDEX FULL SCAN: 表示对索引的完整扫描,类似于全表扫描但针对索引。
    3. INDEX UNIQUE SCAN: 表示对唯一索引的扫描,通常用于查找单个值。
  4. NESTED LOOPS: 表示嵌套循环连接操作,通常用于连接两个或多个表。
  5. HASH JOIN: 表示哈希连接操作,它是另一种连接两个或多个表的方法。
  6. MERGE JOIN: 表示合并连接操作,它基于排序的输入执行连接。
  7. SORT: 表示排序操作,可能是为了执行连接、分组或排序查询结果。
  8. FILTER: 表示过滤操作,用于减少从前面步骤传递过来的行数。
  9. AGGREGATE: 表示聚合操作,如SUM、AVG、COUNT等。
  10. GROUP BY: 表示分组操作,通常与聚合函数一起使用。
  11. COUNT STOPKEY: 在并行查询中,用于停止计数操作的键。
  12. TABLE MAP: 在并行查询中,用于映射表或索引段到不同的并行服务器进程。
  13. PX COORDINATOR: 表示并行查询协调器操作。
  14. PX SEND/PX RECEIVE: 在并行查询中,用于发送和接收数据块。
相关推荐
Hello.Reader1 分钟前
RedisJSON 内存占用剖析与调优
数据库·redis·缓存
wkj00140 分钟前
php 如何通过mysqli操作数据库?
android·数据库·php
九皇叔叔3 小时前
【9】PostgreSQL 之 vacuum 死元组清理
数据库·postgresql
风雅的远行者3 小时前
mysql互为主从失效,重新同步
数据库·mysql
宇钶宇夕4 小时前
S7-1200 系列 PLC 中 SCL 语言的 PEEK 和 POKE 指令使用详解
运维·服务器·数据库·程序人生·自动化
绿蚁新亭4 小时前
Spring的事务控制——学习历程
数据库·学习·spring
scilwb5 小时前
占用栅格地图数据集
数据库
时序数据说6 小时前
时序数据库的存储之道:从数据特性看技术要点
大数据·数据库·物联网·开源·时序数据库·iotdb
鸥梨菌Honevid6 小时前
QT解析文本框数据——概述
数据库·qt·mysql
今天又得骑车了7 小时前
一、MySQL 8.0 之《EXPLAIN ANALYZE 执行计划》
数据库·mysql·database