플랜 순서좀 봐주세요.. 0 17 4,557

by 손님 실행계획 [2009.12.15 15:59:15]


P.JPG (29,275Bytes)

이미지는 첨부 합니다....

이미지에 번호를 먹여 놧습니다..

7 -> 6 -> 5 ->4  -> 12 -> 11 -> 10 -> 9 -> 8 -> 3 -> 2 -> 1

이런 식으로 풀리는게 맞나요?

 

수고하세요

 

 

by 마농 [2009.12.15 16:11:37]
9 -> 12 -> 11 -> 10

9번과 10번이 동일선상에 있으므로 위에 있는 9번이 먼저 실행됩니다.

by 질문자 [2009.12.15 16:29:36]
9,10 동일하지만 10번이 탭스가 더 깊기때문에...
12부터 읽어야 하는거 아닌가여???


by finecomp [2009.12.15 16:37:34]
플랜보는 법을 외우려고 하지마세요...;
8의 hash조인이 되려면 9의 집합을 build-in으로하고 10의 view를 탐색하여 조인한다는 계획입니다.
10의 view는 11 group by가 끝나기 전엔 알 수 없고 group by는 12의 데이터를 scan하기전엔 절대 알 수 없습니다.
해서 당연히 9>12>11>10>8 순으로 scan하고 hash로 연결을 완성하겠단 계획입니다.

by 질문자 [2009.12.15 16:39:48]
그럼..해쉬가 아닌 네스트루푸 조인인경우도 9 , 12 순으로 돼는건가요??

by finecomp [2009.12.15 16:45:35]
넵...또한 sort merge join이라도 마찬가지...;
보통은 그런데 1번처럼 FILTER가 나오는 형태는 주의가 필요합니다.
Filter Plan은 Main 1row당 filter아래에 해당하는 플랜들이 한번씩 반복적으로 수행되는 경우도 있고 아닌 경우(단순 filtering...?)도 있기 때문에...;

by finecomp [2009.12.15 16:48:00]
뭐가 되었던 위 계획에서는 9>12의 순은 유지되겠죠...반복수행이냐 아니냐의 차이는 있겠지만요...ㅎㅎ;

by 마농 [2009.12.15 16:53:19]
보통 뎁스가 가장 깊은데서부터 읽는다는 표현을 쓰는데요.
잘못된 표현입니다. 이 표현 때문에 많은 사람들이 헷갈려 하구요.
동일 레벨의 경우 위에서 아래로 읽는것이 우선이구요.
하위레벨에서 상위레벨로 치고 올라오는 식으로 읽으시면 됩니다.

by 질문자 [2009.12.15 17:04:23]
감사합니다.
그럼 댑스가 제일 깊은것은 선행 테이블이 뭔가 볼때...처음에만 그렇게 보는건가요?

by 마농 [2009.12.15 17:17:09]
이런 경우는 이렇게 풀리고 저런 경우에는 저렇게 풀린다 식으로 이해하지 마세요.
규칙은 단 두가지이고요 모든 경우에 해당됩니다. 예외는 없습니다.

동일 레벨의 노드들중에서는 위에것이 먼저 수행되구요.
하위노드를 가진 노드의 경우에는 하위노드가 먼저 수행됩니다.

by 질문자 [2009.12.15 17:18:27]
그럼 만약에.... 이미지 에서 12번 다음에.... 또 댑스가 있어도...
7번 부터 읽는건가요?? 위에서 부터 읽어서 치고올라가는 방식이라면...

by 질문자 [2009.12.15 17:25:11]
마농님 하위노드를 가진 노드의 경우에는 하위노드가 먼저 수행됩니다.
이 말슴 대로라면 ... 댑스가 제일 깊은거 부터 읽는다는 말과 같지 않나요?

by finecomp [2009.12.15 17:26:05]
당연하죠...각각의 집합의 뎁스와 조인순서는 전혀 다른 얘기입니다...;
현재 3의 조인이 완성되려면 7을 읽어 만든 4번view를 가지고 8의 결과집합을 조인한단겁니다.
8집합 내에서 무슨 일이 벌어지던 4의 집합을 먼저 만들어야 8과 조인이 가능한 것은 변함이 없습니다...;

by finecomp [2009.12.15 17:27:09]
헉 그새 질문이 늘었네요...당연하죠는 7번 부터 읽는 건가요? 의 대답입니다...;

by 마농 [2009.12.15 17:49:53]
7번보다 더 깊은 13번이 있다고 해도 13번이 7번보다 먼저 수행되지는 않습니다.
왜냐하면 7번의 상위인 4번과 13번의 상위인 8번중에 4번이 먼저 수행되어야 하기 때문이죠.

이 때문에 댑스가 깊은게 먼저 수행된다고 암기하시는 것은 크나큰 잘못입니다.

by 질문자 [2009.12.15 17:59:13]
넵.감사합니다.
근대
동일 레벨의 노드들중에서는 위에것이 먼저 수행되구요. <-- 이말뜻은 이해를 햇습니다.
근대
하위노드를 가진 노드의 경우에는 하위노드가 먼저 수행됩니다. <-- 이건 무슨 뜻인가요??

by 채용근 [2009.12.15 18:56:39]
12번 보다 11번이 먼저 수행돼진 않는다구요...

by 요루 [2009.12.31 17:07:45]
좋은글 감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입