3表:僱員(emp_id,dept_id,job_id,emp_fname,emp_lname,工資,地址,電子郵件),部門(dept_id,d_name)和工作(job_id,j_title)。*在oracle的解釋計劃的某些步驟旁邊有什麼意思?
僱員(emp_id),部門(dept_id)和工作(job_id)上的非唯一索引。
SQL> explain plan for
select d.d_name, j.j_title, count(1)
from employees e join departments d on e.dept_id=d.dept_id
join jobs j on e.job_id=j.job_id
where e.salary>30000
group by d.d_name, j.j_title;
SQL>select * from table(DBMS_XPLAN.display);
----------------------------------------------------------------------------------
| Id |操作|名稱|行|字節|成本(%CPU)|時間|
------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 10 | 890 | 4 (25)| 00:00:01 |
| 1 | HASH GROUP BY | | 10 | 890 | 4 (25)| 00:00:01 |
| 2 | NESTED LOOPS | | | | | |
| 3 | NESTED LOOPS | | 10 | 890 | 3 (0)| 00:00:01 |
| 4 | NESTED LOOPS | | 10 | 640 | 3 (0)| 00:00:01 |
|* 5 | TABLE ACCESS FULL | EMPLOYEES | 10 | 390 | 3 (0)| 00:00:01 |
| 6 | TABLE ACCESS BY INDEX ROWID| JOBS | 1 | 25 | 0 (0)| 00:00:01 |
|* 7 | INDEX RANGE SCAN | JOBS_JOB_ID | 1 | | 0 (0)| 00:00:01 |
|* 8 | INDEX RANGE SCAN | DEPT_DEPT_ID | 1 | | 0 (0)| 00:00:01 |
| 9 | TABLE ACCESS BY INDEX ROWID | DEPARTMENTS | 1 | 25 | 0 (0)| 00:00:01 |
謂詞信息(由操作ID標識): --------------------------------- ------------------
5 - filter("E"."SALARY">30000)
7 - access("E"."JOB_ID"="J"."JOB_ID")
8 - access("E"."DEPT_ID"="D"."DEPT_ID")
--------------------------------------------------------------------------
- 是什麼步驟5,7和9 *是什麼意思?
- 這裏有3個嵌套循環的作用是什麼?
- 步驟7和步驟6在同一個循環中。當他們做類似的工作時,爲什麼步驟8和9處於不同的循環中?
- 任何人都可以請解釋我每一步做什麼?
這些指的是有關計劃下應該出現的那些步驟的其他優化程序的註釋。 –
您能否詳細說明一下? @JeffreyKemp –
您還沒有將整個解釋計劃複製到您的問題中。修改您的問題以提供缺失的信息,也許我們可以幫助您。 –