假如有如下表結構和數據
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 |
--------------------------------------------------
畫圖:
同理,下面的執行順序為: