메뉴 건너뛰기

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부 1.4.7. 저장형 함수를 이용한 부분 범위 처리 휘휘 2009.09.06 81256
24 2.3. 조인 종류별 특징및 활용 방안 휘휘 2009.09.13 93141
23 3.1 SQL의 실행계획 (3/3) file 운영자 2009.07.19 93361
22 3.2.4. 비트맵(Bitmap) 실행계획 휘휘 2009.08.24 95079
21 2부 1.4.(1.4.1-1.4.7) 부분범위처리로의 유도 (중요하지 않은 부분 조금 미완성) file balto 2009.08.29 95782
20 2.3.4. 해쉬 (Hash) 조인 file 휘휘 2009.09.14 98316
19 제2부 2장 조인의 최적화 방안 file 휘휘 2009.09.06 98430
18 4.2. 클러스터링 형태의 결정 기준 file balto 2009.08.27 99654
17 3.3. 실행계획의 제어 [1] 휘휘 2009.08.18 100496
16 4.1. 인덱스 선정기준(4.1.1.-4.1.5.) [3] file balto 2009.08.17 100770
15 1.2 인덱스 일체형 테이블(Inde-Organized Table) [3] shadou 2009.07.06 100805
14 3.1 SQL의 실행계획 (2/3) 운영자 2009.07.25 101064
13 3.2.2. 데이터 연결을 위한 실행 계획 [2] file balto 2009.08.06 101229
12 3.1 SQL의 실행계획 (1/3) 운영자 2009.07.19 102161
11 4.1.6. 인덱스 선정 절차 휘휘 2009.08.24 102475
10 1.3 클러스터링 테이블 [5] file 운영자 2009.07.06 103027
9 3.2. 실행계획의 유형 (1/3) - 3.2.1. 스캔의 기본유형 휘휘 2009.08.03 103259
8 1.1. 테이블과 인덱스의 분리형 [3] file 운영자 2009.07.05 105253
7 2부 2.3.(2.3.6-2.3.8) 조인 종류별 특징 및 활용 방안(스타조인, 비트맵조인인덱스) [1] file balto 2009.09.08 107164
6 2.1. B-tree 인덱스 [2] 운영자 2009.07.10 107210