| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- defaultdict
- 보안솔루션
- flexbox
- 가상메모리
- reactnavigation
- display
- 이벤트처리
- pandas
- 파일시스템
- DFS
- sql
- 단위테스트
- 챌린지
- CSS
- parser
- javascript
- 함수형프로그래밍
- database
- 베이직
- db
- ReactNative
- OOP
- SQLD
- 프로그래밍패러다임
- 코딩테스트
- BFS
- folium
- PYTHON
- 부스트캠프
- Graph
- Today
- Total
DevLog
[SQLD] 2과목 "SQL 최적화 기본 원리" 파트 핵심 요약 정리 본문
옵티마이저와 실행 계획
옵티마이저(Optimizer)
사용자가 원하는 결과를 얻기 위한 SQL문 중 가장 효율적으로 수행할 수 있는 최적의 실행방법을 결정하는 것.
옵티마이저의 유형
1) 규칙기반 옵티마이저(RBO) : 15개 우선순위를 기반으로 계획 생성 (우선1순위 : SINGLE ROW BY ROWID 액세스)
2) 비용기반 옵티마이저(CBO) : 통계 정보를 통해 소요시간, 자원 사용량 등을 계산하여 계획 선택. 기본적으로 사용되는 방식이나 잘못된 통계 정보로 성능 저하 가능성 있음.
실행계획(Execution Plan)
SQL 처리를 위한 실행 방법과 절차에 대한 계획.
실행계획의 실행 순서는

1) 자식 → 형제 → 부모 순으로
2) 위에서 아래로, 들여쓰기 기준 안쪽에서 바깥쪽으로 읽는다.
인덱스(INDEX) 기본
데이터베이스에서 검색 속도 향상을 위해 사용하는 기능이다. 대표적인 관계형 DB 인덱스 구조로는 B-Tree가 있다.
`CREATE INDEX IDX ON TABLE(COL)`
CREATE, DROP, ALTER 등을 사용하여 인덱스를 생성, 삭제, 변경한다.
인덱스는 1개 이상의 컬럼을 사용하여 생성할 수 있으며,
동일 컬럼으로 구성된 인덱스를 중복 생성할 수 없지만 컬럼의 순서가 다르면 서로 다른 인덱스로 본다.
- 기본 인덱스는 중복된 키 값을 가질 수 없지만, NULL 값을 가질 수 있다.
- 인덱스를 사용하면 조회, 삽입, 삭제, 갱신의 경우 부하를 가중시켜 연산 속도가 떨어질 수 있다.
- 대량의 데이터를 삽입할 때는 데이터 입력 후 인덱스를 생성하는 것이 좋다.
옵티마이저 조인(Optimizer Join)
1) Nested Loop JOIN (NL JOIN)
선행 테이블에서 데이터를 찾고 후행 테이블을 조인하는 방식. 동등/비동등 조건 모두 사용 가능하다.
조인 데이터 양이 큰 영향을 주기 때문에 적당한 인덱스를 가지고 소량 테이블을 조회하는 경우에 유용하며, 선행 테이블의 크기가 작아야 검색 범위를 줄일 수 있다.
2) Sort Merge JOIN (SM JOIN)
조인 컬럼을 기준으로 데이터를 정렬하여 조인하는 방식. 동등/비동등 조건 모두 사용 가능하다.
인덱스 유무에 영향을 받지 않으며, 컬럼에 적당한 인덱스가 없어서 NL조인이 비효율적일 때 사용한다.
데이터 집계 업무에 많이 쓰인다.
3) Hash JOIN
해시 함수를 이용해서 데이터를 조인하는 방식.
동등 조건에서만 사용 가능하며, 크기가 작은 테이블을 선행 테이블로 잡는다.
SM JOIN하기에 너무 커서 부하가 심할 때 유용하며, 데이터 집계 업무에 많이 쓰인다.

'이모저모 > SQLD' 카테고리의 다른 글
| [SQLD] 2과목 "SQL 활용" - 윈도우 함수 파트 핵심 요약 정리 (0) | 2023.11.16 |
|---|---|
| [SQLD] 2과목 "SQL 활용" - 서브쿼리, 그룹함수 파트 핵심 요약 정리 (0) | 2023.11.16 |
| [SQLD] 2과목 "SQL 활용" - 집합연산자, 계층형 질의 파트 핵심 요약 정리 (0) | 2023.11.16 |
| [SQLD] 2과목 "SQL 활용" - JOIN 파트 핵심 요약 정리 (0) | 2023.11.15 |
| [SQLD] 2과목 "SQL 기본" - 단일행함수, 집계함수 파트 핵심 요약 정리 (0) | 2023.11.15 |