Dbeaver如何看Oralce執行計劃?解決: explain plan FOR 無效? 執行計劃的順序怎麼檢視?
阿新 • • 發佈:2021-01-07
此文轉載自: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 | --------------------------------------------------
畫圖:
同理,下面的執行順序為: