공부기록장

[SQL심화] join에서 on 과 where 조건절 차이 본문

▶ study/SQL

[SQL심화] join에서 on 과 where 조건절 차이

친절한 3 2021. 4. 15. 10:27

SQL join에서 on에도 조건을 줄 수 있고, where절에도 조건을 줄 수 있다. 이때, 얼핏 보기엔 두 경우의 결과에 별 차이가 없어보인다. 하지만, on에서의 조건과 where절에서의 조건에는 약간의 차이가 있다. 이 차이를 명확히 짚고 넘어가부자.

 

코드로 보면 아래와 같다.

1)
select *
from student a, dept b
where a.id = b.id 
and a.name = b.name
and a.id = '1001';

2)
select *
from student a join dept b 
on a.id = b.id 
and a.name = b.name 
and a.id ='1001';

1) 쿼리같은 경우,

조인을 실행한 뒤 -> 조인결과로 생성된 테이블에서 id가 1001인 행들을 검색한다.

2) 쿼리같은 경우

조인 실행 시, a.id가 1001인 테이블과 b테이블을 조인한다. 

 

-> 결과적으론 같은 결과가 나오지만 join절차적인 면에서 차이가 있다. 1쿼리는 나중에 조건을 걸어주는 방식이고, 2쿼리의 경우엔 이미 원하는 테이블을 뽑은 뒤, 그 테이블을 가지고 조인을 이루는 것이다. 성능적인 면에서 봤을 땐 2쿼리가 훨씬 용량을 덜 차지할 것이다. 왜냐하면 미리 조건을 걸어줘서 join연산에 들어가는 용량을 줄여줬기때문에!!!!!!

 

 

Comments