3개 테이블 nl 조인시 2개먼저 조인후 그 결과로 3번째 테이블과 조인 하는건가요? 0 43

by 유환 [SQL Query] [2020.12.06 00:18:18]


안녕하세요~
2개 테이블 nl조인은 밑에 동영상처럼 이해가 쉽게 가는대...
 https://www.youtube.com/watch?v=o1dMJ6-CKzU


테이블 3개 조인할때는 어떻게 동작되는지 궁금 합니다.

3개 테이블 조인시도 로우별로 a = b =c  이렇게 한번에 죽~ 연결해서 조인 하는건지
a=b 먼저 조인하고 그 결과로 c 테이블과 조인 하는건지 궁금합니다.

제 생각에는 3개 테이블 모두 연결하는게 아니라 2개 테이블 먼저 조인하고 결과 집합으로 나머지 테이블이 과
조인할거 같은대 말이죠..

그래야 리딩 힌트라던가 양이적은 테이블순서로 조인하는게 의미가 있지 않싶네요.

 

by 마농 [2020.12.07 09:10:15]

조인 방식에 따라 다르긴 한데. NL 조인의 경우는 중첩 루프방식으로 동작하므로
1개 행만 보면 (a-b)-c 형태로 (a-b) 조인 집합에 c가 다시 조인되는 형태로 볼 수 있구요.
전체 행을 기준으로 보면 1개행 (a-b)-c 조인이 여러번 반복되는 형태로 볼 수 있습니다.
즉, (a-b) 전체 집합에 c 를 연결하는게 아닌거죠.
a-b-c 를 한번에 연결해야 부분범위 처리가 가능해 집니다.


by 유환 [2020.12.07 20:12:47]

감사합니다.

a=b 1개의 행 조인결과로  c랑 조인 한다는 말씀이시죠?

a=b 모든 조인이 완료된 결과로 다시 c랑 조인 하는것이 아니라?

a=b 는 1:n / a=c는 1:1  관계였는대

리딩순서를 a, b, c주니까 c는 3로우를 읽었다고 플랜에 나오고

a,c,b 주니까 c는 1건을 읽었다고 나와서 헷갈렷습니다.

역시 명확하게 설명 해주시네요..

감사합니다.