메뉴 건너뛰기

bysql.net

이화식 선생님의 새로쓴 대용량 데이터 베이스 1의 온라인 스터디 입니다.
매주 각 스터디 팀원들이 담당 분량을 정리해서 올리고 토론식으로 진행합니다.
스터디 포스팅은 팀원들에의해 이루어지지만 스터디 참여는 사이트 회원 모두가 가능합니다.

진행기간: 2009.07 ~ 2009.10. 종료

2.2. 연결고리 상태가 조인에 미치는 영향

balto 2009.09.05 15:25 조회 수 : 117477

 

2.2. 연결고리 상태가 조인에 미치는 영향

- 조인에서 연결고리란 테이블을 연결하는 조인 조건을 말한다. 연결고리에 인덱스가 있는지 여부에 따라 정상, 이상으로 구분한다.


2.2.1. 연결고리 정상

- 조인조건이 되는 속성에 대한 인덱스가 모두 존재하는 경우.

- 두 테이블 중 하나가 드라이빙 테이블이 될 수 있다.

- 어느 테이블이 드라이빙(driving) 테이블이 되더라도 드리븐(driven) 테이블의 인덱스를 사용한다.

 가능한 1:M의 1쪽의 테이블을 드라이빙 테이블로 한다.

- 어느 테이블이 드라이빙 테이블이 되는가에 따라 속도가 큰 차이는 없지만 차이가 있을 수 있다.

  (SQL예)

 SELECT *

 FROM TAB2 b, TAB1 a

 WHERE a.key1=b.key2 AND b.col2 LIKE 'AB%' AND a.col1='10';

   (가정)

 (TAB1 :  a.col1='10'을 만족하는 범위는 5,000건)

       |

 (TAB2 :  b.col2 LIKE 'AB%'를 만족하는 데이터는 100건)

   (처리예 1)

 TAB1에서 10인 것을 찾는다 -> KEY2 인덱스와 연결 -> 결과 생성

 TAB2에 KEY2+COL2 인덱스가 있다면 더 효율적이다.

   (처리예 2)

 TAB2에서 AB%를 찾는다 -> KEY1 인덱스와 연결 -> 결과 생성

   (참고) TAB2를 먼저 처리하려면 /*+ ORDERED */ 힌트를 사용한다.

 

2.2.2. 한쪽 연결고리 이상

- 조인조건이 되는 속성에 대한 인덱스가 한쪽 테이블에만 존재하는 경우

- 인덱스가 없는 테이블을 드라이빙 테이블로 하거나, 소트머지 혹은 해시조인을 사용한다.

- 인덱스가 없는 테이블을 드라이빙 테이블로 하지만 아래 예처럼 비효율적인 경우가 있음을 알아야 한다.

  (SQL예)

 SELECT *

 FROM TAB2 b, TAB1 a

 WHERE a.key1=b.key2 AND a.col1='20';

   (처리예)

 TAB2 처리 -> KEY1 인덱스와 연결 -> 결과 생성

   (참고) TAB1의 데이터를 줄일 수 있는 a.col='20'을 인덱스를 활용하지 못한다.



2.2.3. 양쪽 연결고리 이상

- 조인조건이 되는 속성에 대한 인덱스가 양쪽 테이블 모두 존재하지 않는 경우

- 소트머지 혹은 해시조인을 사용한다.

번호 제목 글쓴이 날짜 조회 수
25 1.1. 테이블과 인덱스의 분리형 [3] file 운영자 2009.07.04 102301
24 1.2 인덱스 일체형 테이블(Inde-Organized Table) [3] shadou 2009.07.06 100516
23 1.3 클러스터링 테이블 [5] file 운영자 2009.07.05 102605
22 1.액세스 영향 요소의 이해 tofriend 2009.07.01 126264
21 2.1. B-tree 인덱스 [2] 운영자 2009.07.10 106288
20 2.2. 비트맵(Bitmap) 인덱스 [2] file 휘휘 2009.07.14 121339
» 2.2. 연결고리 상태가 조인에 미치는 영향 file balto 2009.09.05 117477
18 2.3 함수기반 인덱스 (FBI,Function-Based Index) [1] 운영자 2009.07.11 159753
17 2.3. 조인 종류별 특징및 활용 방안 휘휘 2009.09.12 92756
16 2.3.4. 해쉬 (Hash) 조인 file 휘휘 2009.09.13 97900
15 2부 1.4.(1.4.1-1.4.7) 부분범위처리로의 유도 (중요하지 않은 부분 조금 미완성) file balto 2009.08.29 95477
14 2부 2.3.(2.3.6-2.3.8) 조인 종류별 특징 및 활용 방안(스타조인, 비트맵조인인덱스) [1] file balto 2009.09.07 106874
13 3.1 SQL의 실행계획 (1/3) 운영자 2009.07.18 101794
12 3.1 SQL의 실행계획 (2/3) 운영자 2009.07.24 95550
11 3.1 SQL의 실행계획 (3/3) file 운영자 2009.07.18 92443
10 3.2. 실행계획의 유형 (1/3) - 3.2.1. 스캔의 기본유형 휘휘 2009.08.02 102401
9 3.2.2. 데이터 연결을 위한 실행 계획 [2] file balto 2009.08.06 100380
8 3.2.4. 비트맵(Bitmap) 실행계획 휘휘 2009.08.23 94715
7 3.3. 실행계획의 제어 [1] 휘휘 2009.08.18 100175
6 4.1. 인덱스 선정기준(4.1.1.-4.1.5.) [3] file balto 2009.08.17 100415