Oracle EXPLAIN PLAN

Oracle EXPLAIN PLAN 是用于生成 SQL 语句执行计划的命令,帮助分析查询性能而不实际执行 SQL‌。‌‌‌

1、怎么生成和查看执行计划

‌基本使用方法‌:在 SQL 语句前加上EXPLAIN PLAN FOR,执行后计划会存入 PLAN_TABLE 表。

示例:EXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id = 10;

执行后显示"已解释",表示计划已生成。‌‌‌

‌查看执行计划的两种方式‌:

‌推荐方式‌:使用SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());以格式化形式展示。

‌直接查询‌:SELECT * FROM plan_table;查看原始数据。‌‌‌

‌使用 AUTOTRACE 快速查看‌:在 SQL*Plus 中设置SET AUTOTRACE ON EXPLAIN可直接显示执行计划。

SET AUTOTRACE ON:同时显示执行计划和统计信息。

SET AUTOTRACE TRACEONLY:只显示计划和统计,不显示查询结果。

2、执行计划怎么解读

‌执行顺序判断‌:遵循‌从右向左、从上到下‌的原则,缩进最大的行最先执行。

同一级别中,靠上的节点优先执行。

有子节点时,先从最靠右的子节点开始。

‌关键字段含义‌:

‌ID‌:执行步骤编号,表示树形结构中的层级关系。

‌Operation‌:操作类型,如全表扫描 (TABLE ACCESS FULL)、索引扫描 (INDEX RANGE SCAN)、连接操作 (HASH JOIN/NESTED LOOP)。

‌Cost‌:执行成本,数值越低表示优化器认为该计划越高效。

‌Rows‌:优化器预估的返回行数,依赖统计信息准确性。

‌Object_Name‌:操作涉及的表名或索引名。‌‌‌

‌常见操作类型‌:

‌表访问‌:全表扫描适合小表,索引扫描适合大表精准查询。

‌连接操作‌:嵌套循环适合小表连接,哈希连接适合大数据集。

‌子查询‌:相关子查询可能性能较差,可考虑改写为 JOIN。‌‌‌

使用时的注意事项

‌执行计划是预估的‌:EXPLAIN PLAN 不会实际执行 SQL,生成的计划可能与实际执行有出入。

适合测试敏感操作 (如 DDL/DML) 而不影响生产数据。

实际执行可用DBMS_XPLAN.DISPLAY_CURSOR查看已执行 SQL 的真实计划。‌‌‌

‌依赖统计信息‌:执行计划准确性高度依赖表和索引的统计信息。

统计信息包括行数、块数、直方图等。

统计信息过时可能导致优化器选择不佳的执行计划。

‌权限要求‌:需要对输出表有插入权限,对 SQL 涉及的表有访问权限。

默认输出表为当前 schema 下的 PLAN_TABLE。

可使用SET STATEMENT_ID区分不同执行计划。

相关推荐
CoderYanger6 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
wafrdggh8 小时前
2026电商快递批量查询怎么用?固乔助手模板设置评测
大数据·数据库·小程序
一个天蝎座 白勺 程序猿9 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
龙腾AI白云12 小时前
仿真到现实(Sim-to-Real)迁移:跨越仿真与现实鸿沟
数据库·机器学习·plotly·知识图谱·tornado
freejackman14 小时前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql
.痞老板.16 小时前
mysql初阶--增删改查操作
数据库·mysql
lambo mercy21 小时前
AI智能租房助手
数据库
浮生若城1 天前
MySQL:库与表的操作
数据库·mysql
薛定谔的悦1 天前
光储充一体机从主控到执行单元的双层架构
数据库·mongodb·架构
数字新视界1 天前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统