by 유환 [Oracle 기초] [2020.03.24 23:11:09]
안녕하세요.~
조인에 개념 질문 입니다. 네스트 루프 방식으로 조인하다 가정 하고
A, B, C 테이블 조인시....
A,B 조인해서 나온 결과 집합으로 C랑 조인 하는건가요?
즉 A,B조인 해서 나온 결과가 10개 라면 10개 결과 집합에서 C랑 조인....
아님 A=B=C 이런식으로 죽~ 한번에 연결해서 조인 하는건가요?
상식적으로 생각하면 A,B 조인하고 만들어진 집합에서 C랑 조인하는게 더 빨리 찾을거 같기는 한대요..
SQL 작성을 A,B,C 테이블 순으로 작성하셨다 하더라도 별도의 강제 조정의 작업이 없다면 테이블 조인 순서는 옵티마이저가 결정합니다.
옵티마이저가 결정한 테이블 접근 순서가 A B C 순이라면 말씀하신대로 A,B를 조인 후 결과를 가지고 C에 NL접근하겠습니다
A - B 조인 후 전체 집합을 가지고 다시 C 와 조인할 수도 있고, (A - B) - C 형태 A - B 조인을 하면서 1건씩 C 와 조인 할 수도 있습니다. A - B - C 형태 반복 조인방식이 NL 로 풀린다면 후자 쪽이 될 가능성이 있죠. 그때 그때 달라요.
어라 NL조인이고 A B C 순에서 A가 B와 조인 후 C 가능 것이 아니라 B와 동시에 C 접근을 하는 경우도 가능한가요?
몰랐습니다...제가 잘못된 정보를 올렸군요....수정해야하나..ㅠㅠ
질문하신 분은 마농님 답변으로 보시면되겠습니다~~