-
[SQLD 요약] II. SQL 기본 및 활용 - 03. SQL 최적화의 원리 (2) - 실행계획 및 옵티마이저 조인자격증/SQLD (SQL 개발자) 2021. 5. 12. 22:39728x90반응형
SQLD 요약 / SQL Developer 요약
🔑 실행계획/ 옵티마이저 조인/ 힌트Hint/ Nested Loop Join/ Random Access/ Sort Merge Join/ Hash Join
II. SQL 기본 및 활용
03. SQL 최적화의 원리
[1] 옵티마이저와 실행계획
[2] 옵티마이저 종류
[3] 인덱스 (Index)
[4] 실행 계획 (Execution Plan)
[5] 옵티마이저 조인 (Optimizer Join)
03. SQL 최적화의 원리
[4] 실행 계획 (Execution Plan)
(1) SQL 실행 계획
- 예시: Nested Loop Join 실행 계획
SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.DEPTNO = 10;
SQL 실행 흐름도 실행계획 (Execution Plan) 1번. INDEX UNIQUE SCAN
DEPT 테이블의 인덱스를
유일하게 조회함2번. INDEX SCAN
INDEX에서 DEPT 테이블의
ROWID를 사용하여 조회함3번. FULL SCAN
EMP 테이블을 전체 스캔함※ RANDOM ACCESS 방식
[5] 옵티마이저 조인 (Optimizer Join)
Nested Loop 조인
/* ordered use_nl(outer table) */Sort Merge 조인
/* ordered use_merge(outer table) */Hash 조인
/* ordered use_hash(outer table) */- 한 테이블에서 데이터를 먼저 찾고
다음 테이블을 조인하는 방식- 먼저, 2개의 테이블을 SORT_AREA라는
메모리 공간에 모두 로딩함- 2개 테이블 중, 작은 테이블을
HASH 메모리에 로딩함- 외부 테이블 (Outer Table): 먼저 조회됨
- 내부 테이블 (Inner Table): 다음에 조회- SORT 단계: 2개 테이블에 대해 정렬 수행
- MERGE 단계: 정렬 후, 2개 테이블을 병합- 2개 테이블의 조인 키를 사용하여
해시 테이블을 생성함- 크기가 작은 외부 테이블을 찾는 것이 중요
→ 데이터가 스캔되는 범위를 줄일 수 있음!- 데이터 너무 많으면 임시영역에서 수행
→ 임시영역은 디스크에 있으므로 급저하↓- 해시함수를 사용하여 주소를 계산함
- 주소를 사용하므로 CPU 연산을 많이 함- RANDOM ACCESS 양을 줄여야 성능 향상 - 데이터 양이 많으면 정렬 때문에 성능 저하 - 선행테이블: 메모리 로딩되는 크기여야 함 # Nested Loop Join 예시 # Hint: use_nl SELECT /*+ ordered use_nl(b) */ * FROM EMP a, DEPT b WHERE a.DEPTNO = b.DEPTNO AND a.DEPTNO = 10;
참고도서: SQL 개발자 이론서+기출문제_이기적, 2020
728x90반응형'자격증 > SQLD (SQL 개발자)' 카테고리의 다른 글
SQLD 요약 정리 링크 모음, 키워드 모음 (0) 2024.05.15 [SQLD 요약] II. SQL 기본 및 활용 - 03. SQL 최적화의 원리 (1) - 옵티마이저 & 인덱스 (0) 2021.05.12 [SQLD 요약] II. SQL 기본 및 활용 - 02. SQL 활용 (4) - 윈도우함수, 테이블파티션 (0) 2021.05.09 [SQLD 요약] II. SQL 기본 및 활용 - 02. SQL 활용 (3) - Group Function (그룹함수) (0) 2021.05.08 [SQLD 요약] II. SQL 기본 및 활용 - 02. SQL 활용 (2) - Connect by, Subquery (서브쿼리) (0) 2021.05.08