Dbeaver如何看Oralce执行计划?解决: explain plan FOR 无效? 执行计划的顺序怎么查看?

本文介绍了在Oracle数据库中如何正确生成并解读SQL执行计划。通过具体示例,讲解了使用EXPLAIN PLAN及DBMS_XPLAN.DISPLAY命令的步骤,并解释了执行计划中各操作符的意义及其执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果转载,还请注明出处!感谢支持

假如有如下表结构和数据

CREATE TABLE student
(
    id    number(10) PRIMARY KEY,
    name  varchar(10)                not NULL,
    name2 char(10) DEFAULT 'default' NOT NULL,
    age   number(4)
) tablespace XXXXX;

COMMENT ON COLUMN student.name IS '姓名';
COMMENT ON COLUMN student.name2 IS '姓名2';
COMMENT ON COLUMN student.age IS '年龄';


CREATE UNIQUE INDEX STUDENT_IDX_01 on STUDENT (id,name);
CREATE UNIQUE INDEX STUDENT_IDX_02 on STUDENT (age);
ID NAME NAME2 AGE
1 1      1     1
2 2      2     2
3 3      3     3
4 4      4     [NULL]

在dbeaver中用

explain plan FOR SELECT * from student;

查看执行计划,发现没有任何反应(原因见后文)。

所以只能用工具来查看了,如何做呢?

注意上面可能因为版本问题出现的坑: 如果执行计划没有任何反应,先删除“;”分号,重新加上然后再执行。

为什么用下面的方法查看不到执行计划呢?

explain plan FOR SELECT * from student;

原因是我们还少了一条查询SQL,上面只是生成执行计划,但是不会主动显示.

explain plan FOR SELECT * from student;
SELECT * FROM TABLE(dbms_xplan.display);

执行计划如何看呢? 执行计划的执行顺序如何判断?

答:树的后续遍历

假如执行计划为:

--------------------------------------------------
| Id  | Operation                     | Name     |
--------------------------------------------------
|   0 | SELECT STATEMENT              |          |
|*  1 |  FILTER                       |          |
|   2 |   NESTED LOOPS                |          |
|   3 |    TABLE ACCESS FULL          | EMP      |
|   4 |    TABLE ACCESS BY INDEX ROWID| DEPT     |
|*  5 |     INDEX UNIQUE SCAN         | PK_DEPT  |
|*  6 |   TABLE ACCESS FULL           | SALGRADE |
--------------------------------------------------

画图:

同理,下面的执行顺序为:

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值