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

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건을 읽었다고 나와서 헷갈렷습니다.

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

감사합니다.

 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입