해결된 질문
작성
·
331
0
with : https://www.inflearn.com/questions/542285
강사님께서 with 절을 사용하시는 이유는
수강생이 SQL 진행 순서를 보여주기 위해서 사용하신다고 하셨는데
강사님께서는 실무에서 with을 주로 어떤 용도로 사용하시는지 궁금합니다
그리고
select a.dname , round(avg(c.sal),0) as "부서별 평균 급여"
from dept a
join emp b
on a.deptno = b.deptno and a.dname in ('SALES','RESEARCH')
left join emp_salary_hist c
on b.empno = c.empno
group by a.dname ;
-- 강사님께서 작성하신 코드
select a.deptno, max(a.dname) as dname, avg(c.sal) as avg_sal, count(*) as cnt
from hr.dept a
join hr.emp b on a.deptno = b.deptno
join hr.emp_salary_hist c on b.empno = c.empno
where a.dname in('SALES', 'RESEARCH')
group by a.deptno
order by 1;
저는 where에 조건을 넣지 않고 and에 조건을 넣었습니다.
그이유는 dname에 인덱스가 없기때문에 where에 조건을 추가하면
테이블을 조인한 후에 필터링을 하고 Group by를 진행하게 되는 것보다
join on and 에 조건을 넣으면 조건에 만족하는 데이터만 가지고 조인을 하기때문에
조금이라도 조인 성능이 좋아지지 않을까 생각했습니다.
아니면 join 조건도 인덱스가 없으면
where 절과 똑같이 조건 스캔을 먼저 하냐 뒤에 하냐 차이일 뿐인가요 ?
인프런에서 글을 찾을수 없다고해서 삭제된줄 알았는데 다시 돌아왔네요 감사합니다