밥벌이/데이터베이스 조인(Join) 연산 - 반응형 정의 조인은 하나의 처리 문장을 이용해 데이터베이스의 테이블 2개를 연결하여 새로운 테이블을 생성하는 기능 데이터베이스의 성능에 영향을 미치게 되어 추후 반정규화 또는 튜닝의 대상이 되기도 함 분류 동등 조인(Equi-Join) 조인 조건에 동등 연산자만을 사용한 조인 비동등 조인(Nonequi-Join) 조인 조건에 비동등 연산자만을 사용한 조인 카테시안 프로덕트(Cartesian Product) 조인 조건이 없는 조인 각 테이블의 튜플 건수의 곱만큼 결과가 생성됨 상호 조인(Cross Join)이라고도 하며, 실제로는 거의 사용하지 않음 내부 조인(Inner Join) 조인 조건을 만족하는 튜플들만 결과 테이블에 포함하는 조인 대부분의 조인이 이에 해당하며, 어떤 조인인지 지정하지 않으면 내부 조인으로 인식 외부 조인(Outer Join) 조인 조건을 만족하지 않는 튜플까지 결과 테이블에 포함하는 조인 종류로는 왼쪽 외부 조인(Left Outer Join)와 오른쪽 외부 조인(Right Outer Join), 완전 외부 조인(Full Outer Join)이 있음 자신 조인(Self Join) 기준 테이블이 자신을 참조 테이블로 하여 수행하는 조인 같은 테이블의 서로 관련이 있는 튜플들을 조합해서 추출할 필요가 있을 때 사용함 자연 조인(Natural Join) 동등 조인 결과에서 중복되는 속성을 제거한 조인 조인 처리 방법 중첩-반복(Nested-Loop) 조인 한 테이블(내부 테이블)에서 검색 조건을 만족하는 튜플을 하나식 접근하면서, 그 추출된 값으로 조인 조건에 따라 다른 테이블(외부 테이블)과 조인하는 방식 먼저 접근하는 테이블의 처리 범위에 있는 튜플들을 순차적으로 처리하며, 이 처리 범위에 의해 처리량이 결정 인덱스가 필요 없고, 모든 종류의 조인 조건에 대해 적용 가능 부분 범위 처리를 하는 경우에 유리한, 다른 방법에 비해 비용이 가장 큼 블록 중첩-반복(Block Nested-Loop) 조인 한 테이블의 모든 블록이 다른 테이블의 모든 블록과 쌍을 이루도록 중첩 반복 조인을 변형한 방식 각 블록의 쌍 내에서 하나의 블록 내의 모든 튜플은 또 다른 블록 내의 모든 튜플과 쌍을 이루어 조인을 수행 블록 단위로 테이블을 처리함으로써, 블록 접근 횟수가 감소 색인된 중첩-반복(Indexed Nested-Loop) 조인 종첩-반복 조인 시 다음 조건을 만족하는 경우 인덱스를 이용해 파일 스캔을 대체하는 방식 동등 조인이거나 자연 조인일 경우 내부 테이블의 조인 속성에 대해 인덱스가 있는 경우 내부 테이블과 외부 테이블 모두에 대해 조인 속성에 대한 인덱스가 존재하는 경우에는 적은 수의 튜플을 갖는 테이블을 외부 테이블로 사용하는 것이 효율적임 조인 연산을 위해 인덱스를 임시로 생성해서 사용하는 것이 가능 정렬-병합(Sort-Merge) 조인 양쪽 테이블의 처리 범위를 각자 정렬한 후 정렬한 결과를 차례로 스캔 하면서 조인 조건에 따라 병합하는 방식 동등 조인과 자연 조인인 경우에만 적용 가능 정렬을 해야 하므로 처리 비용이 일반적으로 비싸며, 전체 범위 처리를 하는 경우에 유리 조인 속성에 대해서, 한 테이블은 정렬되어 있고 다른 테이블은 B+-tree를 가지고 있는 경우에, 혼합 정렬-병합(Hybrid Sort-Merge) 조인을 수행 해시(Hash) 조인 먼저 접근하는 테이블을 전체 테이블 스캔을 통해 접근하여 해시 테이블을 생성한 후 , 다른 테이블의 처리 범위에 대해 해시 함수를 적용하여 해시 테이블과 조인 주로 크기기 작은 테이블을 먼저 접근하는데, 대량의 데이터를 처리할 때 좋으며, 작은 테이블과 큰 테이블의 조인 시에 유리 동등 조인과 자연 조인인 경우에만 적용 가능하며, 먼저 접근하는 테이블에서는 인덱스를 필요로 하지 않음 메모리 크기가 상대적으로 크고, build input이 메모리 보다 클 경우에는 혼합 해시 (Hybrid Hash) 조인을 사용 반응형 공유하기 게시글 관리 구독하기IT RED OCEAN 에서 살아 남기(일흔까지만) '밥벌이 > 데이터베이스' 카테고리의 다른 글 셀렉션(Selection) 연산 (0) 2011.01.31 정렬(Sorting) (0) 2011.01.31 기타 연산 (0) 2011.01.31 관계 대수식 평가(Evaluation) (0) 2011.01.31 질의 최적화 (0) 2011.01.31 Contents 당신이 좋아할만한 콘텐츠 셀렉션(Selection) 연산 2011.01.31 정렬(Sorting) 2011.01.31 기타 연산 2011.01.31 관계 대수식 평가(Evaluation) 2011.01.31 댓글 0 + 이전 댓글 더보기