• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    해결됨

강사님 Group By 실습 - 01 질문 있습니다

23.06.06 23:41 작성 조회수 256

0

with : https://www.inflearn.com/questions/542285

 

강사님께서 with 절을 사용하시는 이유는

수강생이 SQL 진행 순서를 보여주기 위해서 사용하신다고 하셨는데

  1. 강사님께서는 실무에서 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 절과 똑같이 조건 스캔을 먼저 하냐 뒤에 하냐 차이일 뿐인가요 ?

답변 1

답변을 작성해보세요.

1

이전 질문과 동일한 질문이어서 이전 질문의 답변을 확인 부탁드립니다.

cjh님의 프로필

cjh

질문자

2023.06.07

인프런에서 글을 찾을수 없다고해서 삭제된줄 알았는데 다시 돌아왔네요 감사합니다