메뉴 건너뛰기

bysql.net

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

진행기간: 2009.07 ~ 2009.10. 종료

 

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 2.3.4. 해쉬 (Hash) 조인 file 휘휘 2009.09.14 98312
24 2.3. 조인 종류별 특징및 활용 방안 휘휘 2009.09.13 93137
23 2부 2.3.(2.3.6-2.3.8) 조인 종류별 특징 및 활용 방안(스타조인, 비트맵조인인덱스) [1] file balto 2009.09.08 107160
22 제2부 2장 조인의 최적화 방안 file 휘휘 2009.09.06 98426
21 제2부 1.4.7. 저장형 함수를 이용한 부분 범위 처리 휘휘 2009.09.06 81252
» 2.2. 연결고리 상태가 조인에 미치는 영향 file balto 2009.09.05 118351
19 2부 1.4.(1.4.1-1.4.7) 부분범위처리로의 유도 (중요하지 않은 부분 조금 미완성) file balto 2009.08.29 95778
18 4.2. 클러스터링 형태의 결정 기준 file balto 2009.08.27 99650
17 4.1.6. 인덱스 선정 절차 휘휘 2009.08.24 102471
16 3.2.4. 비트맵(Bitmap) 실행계획 휘휘 2009.08.24 95075
15 3.3. 실행계획의 제어 [1] 휘휘 2009.08.18 100492
14 4.1. 인덱스 선정기준(4.1.1.-4.1.5.) [3] file balto 2009.08.17 100766
13 3.2.2. 데이터 연결을 위한 실행 계획 [2] file balto 2009.08.06 101229
12 3.2. 실행계획의 유형 (1/3) - 3.2.1. 스캔의 기본유형 휘휘 2009.08.03 103259
11 3.1 SQL의 실행계획 (2/3) 운영자 2009.07.25 101062
10 3.1 SQL의 실행계획 (3/3) file 운영자 2009.07.19 93361
9 3.1 SQL의 실행계획 (1/3) 운영자 2009.07.19 102160
8 2.2. 비트맵(Bitmap) 인덱스 [2] file 휘휘 2009.07.15 122543
7 2.3 함수기반 인덱스 (FBI,Function-Based Index) [1] 운영자 2009.07.12 160348
6 2.1. B-tree 인덱스 [2] 운영자 2009.07.10 107210