database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 774 게시물 읽기
No. 774
hybrid join 메커니즘이 어떻게 되나요..?
작성자
초보
작성일
2005-03-10 14:13ⓒ
2005-03-10 14:15ⓜ
조회수
6,752

DB2에 존재하는 Hybrid Join이 어떤 방식으로 이루어 지는지 알고 싶은데-_-;;

답변 좀 부탁드리겠습니다.

<Nested Loops, Sort Merge, Hash> Jion방식과는 다른 방식인듯 한데..

이 글에 대한 댓글이 총 2건 있습니다.

일반적으로 데이터를 연결하는 방법중에 하나로 조인이라는 것이 있습니다. 그중에서는 크게 Nested Loop Join, Sort Merge Join, Hash Join, Star Join 등이 있겠네요. Hybrid Join 이라는건 분명 Nested Loop Join과 Sort Merge Join이 믹스 되있는 형태 입니다. 위에 말씀드린 NL과 MJ은 설명 드리지 않아도 잘 아시고 계실꺼라 생각 되어지므로,

Hybrid Join에 관해서만 간략하게 설명을 드리겠습니다.

 

우선 아래와 같은 SQL문이 있다고 가정합니다.

 

Select A.col1,A.col2, B.col1, B.col2

From tab1 A, tab2 B

WHERE A.col1='a'

  and A.col1=B.col1

 

tab1과 tab2의 테이블에서는 각각 col1을 인덱스로 가지고 있답니다.

tab1의 col1은 인덱스가 정렬되 있는 상태 즉 클러스터링 된 상태이고,

tab2의 col2은 인덱스가 정렬되어 있지 않다고 가정했을때,

 

만약 Nested Loop 조인을 했을때, 데이터 량이 적으면 상관 없을 수 있겠지만 데이터의 양이 많은 경우에, 먼저 상수 조건인 col1의 인덱스를 타서 tab1의 데이터를 획득수 정렬되있지 않은 tab2의 col1을 랜덤 액세스 합니다. tab2의 데이터 량이 많은경우 수많은 블록을 랜덤 액세스 해야 하는 경우가 발생할수 있습니다.

 

만약 Sort Merge 조인으로 실행계획이 세워지는 경우에, tab1과 tab2의 테이블을 인텍스 순으로 sort합니다. 그후 sort되어진 각각의col1을 통해 Merge하게 됩니다, 만약 A.col1='a'에 해당하는 로우수가 대부분인 경우에는 유리한 실행계획이지만, 반대로 로우수가 적으면 그만큼 불필요한 access가 발생하는 결과를 초래 합니다.

 

Hybrid 조인으로 실행계획이 세워지는 경우에는 우선 먼저 드라이빙 되는 테이블이 상수값을 비교하는 테이블.tab1을 A.col1 부분 인덱스 스켄합니다. 그담에, tab2는 Sort Merge 조인에서 처럼, A.col1에 대응되는 B.col2의 RowId를 획득해서 sort한 후 Merge합니다.

경우에 따라서, Hybrid Join이 힘을 발휘 할 수 있겠네요.

 

네트워크의해님이 2005-03-16 14:00에 작성한 댓글입니다. Edit

감사합니다 :-)

초보님이 2005-04-17 17:05에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
778DB2->MS-SQL 데이터 마이그레이션.. [2]
정범구
2005-03-21
5463
777이런문장 안대나요??? [1]
양충식
2005-03-16
6084
775한글 + 영문(EBCDIC) 조합으로 된 내용을 select 해올때 [1]
김초짜
2005-03-15
6495
774hybrid join 메커니즘이 어떻게 되나요..? [2]
초보
2005-03-10
6752
772[SQL]중복되는 것 중에 고르기 [2]
김명석
2005-03-07
6802
771디비2에서는 스키마가 다른 개정의 테이블을 볼수 있나요?? [1]
코난
2005-02-27
5378
770MSSQL에서 @@rowcount와 같은 기능이 있는지요? [1]
전운
2005-02-26
7590
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다