직원 (emp_id, dept_id, job_id, emp_fname, emp_lname, 급여, 주소, 전자 메일), 부서 (dept_id, d_name) 및 작업 (job_id, j_title) 3 개의 테이블.오라클의 explain plan에서 몇 가지 단계는 무엇을 의미합니까?
직원 (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);
----------------------------------------------------------------------------------
| 이드 | 운영 | 이름 | 행 | 바이트 | 비용 (% CPU) | 시간 | (동작 id에 의해 식별 됨)
------------------------------------------------------------------------------------------------
| 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 |
술어 정보 : --------------------------------- ------------------
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 –
귀하의 질문에 전체 Explain 계획을 복사하지 않았습니다. 누락 된 정보를 제공하기 위해 질문을 수정하십시오. 그러면 우리가 귀하를 도울 수 있습니다. –