select a.*
from a a
, b b
, c c
where a.col1 = b.col1(+)
and a.col2 = b.col2(+)
and b.col3 = c.col3(+)
and c.col4(+) = '4'
위의 쿼리에서 마지막 조건절 c.col4(+) = '4' / c.col4 = '4' 하고 차이점이 뭔가요??
아우터 조인이란 a 와 b 의 조인 조건이 만족하지 않더라도 a 는 모두 조회되는 것입니다. 위 쿼리에서는 a 를 기준으로 b 를 아우터 조인 했구요. 다시 또 연달아서 b 를 기준으로 c 를 아우터 조인하는 형태입니다.
여기서 마지막 조건에 아우터 기호(+)가 없다면? c = '4' 를 만족하는 것만 조회됩니다. 조건을 만족하지 않아도 b 는 나와야 하고, 또한 연달아서 a 도 나와야 하는데 조건을 만족하지 않으면 b가 안나오게 됩니다. 즉, 아우터 조인을 하긴 했지만, 다시 필터조건으로 걸러내니 아우터 조인의 효과는 사라집니다. 아우터 조인 하나마나한 결과가 나오게 됩니다.
마지막 조건에 아우터 기호(+)가 있다면? 이 조건은 걸러내는 조건이 아닌 조인조건으로서 동작되겠지요. c = '4' 를 만족하는 자료가 없더라도 b 는 나오게 되구요. 아우터 조인을 충족하게 됩니다.
마농님 귀한 시간 투자해주셔서 감사드립니다.
덕분에 훌륭한 가르침 배우고 갑니다.
아우터 조인이 이너 조인보다 조회 속도가 엄청 차이가 나니...감히 쓸 엄두를 안나네요. ㅠㅠ