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: 在并行查询中,用于发送和接收数据块。
相关推荐
飞翔的佩奇14 分钟前
Java项目:基于SSM框架实现的忘忧小区物业管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
java·数据库·mysql·vue·毕业设计·ssm框架·小区物业管理系统
ZWZhangYu6 小时前
LangChain 构建向量数据库和检索器
数据库·langchain·easyui
feifeigo1237 小时前
升级到MySQL 8.4,MySQL启动报错:io_setup() failed with EAGAIN
数据库·mysql·adb
火龙谷9 小时前
【nosql】有哪些非关系型数据库?
数据库·nosql
焱焱枫10 小时前
Oracle获取执行计划之10046 技术详解
数据库·oracle
qq_3923971211 小时前
Redis常用操作
数据库·redis·wpf
一只fish13 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(17)
数据库·mysql
花好月圆春祺夏安13 小时前
基于odoo17的设计模式详解---装饰模式
数据库·python·设计模式
A__tao13 小时前
SQL 转 Java 实体类工具
java·数据库·sql
m0_6530313613 小时前
腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE PostgreSQL版)
运维·数据库·腾讯云