Dbeaver如何看Oralce執行計划?解決: explain plan FOR 無效? 執行計划的順序怎么查看?


此文轉載自:https://blog.csdn.net/q258523454/article/details/112252826#commentBox

假如有如下表結構和數據

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

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 |
--------------------------------------------------

畫圖:

同理,下面的執行順序為:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM