Database · 한장정리
[기술사토픽] 인덱스 & 쿼리 최적화 완벽 정리 - 한장정리
B+Tree·Hash 인덱스 구조와 장단점, 실행계획 분석, 조인 알고리즘 3가지, 쿼리 튜닝 핵심 기법까지 기술사 빈출 주제를 완벽 정리합니다.
Ⅰ.DB 조회 성능 향상 기술, 인덱스의 개요
개념: 인덱스(Index)란 데이터 검색 속도를 높이기 위해 테이블의 특정 컬럼에 생성하는 별도의 데이터 구조입니다. 책의 색인처럼 전체 탐색 없이 빠른 검색을 가능하게 합니다.
트레이드오프: 조회 성능 ↑ / 삽입·수정·삭제 성능 ↓ / 추가 저장공간 필요
가. 인덱스 유형 비교
| 유형 | 구조 | 장점 | 단점 | 적합 상황 |
|---|---|---|---|---|
| B+Tree | 균형 트리 리프 노드 연결 |
범위 검색 빠름 정렬 지원 |
삽입·삭제 시 재균형 | 일반 조회, 범위 검색 |
| Hash | 해시 함수 버킷 구조 |
등치 검색 O(1) | 범위 검색 불가 충돌 처리 필요 |
등치(=) 검색 전용 |
| Bitmap | 비트 배열 | 저카디널리티 효율적 AND/OR 연산 빠름 |
갱신 비용 높음 | 성별, 상태 등 소수 값 |
| 클러스터드 | 물리적 정렬 테이블당 1개 |
범위 검색 최고 성능 | 삽입 시 페이지 분할 | PK, 주요 범위 검색 |
시험 포인트
B+Tree = 리프 노드끼리 연결되어 범위 검색 최적. B-Tree와 차이: B+Tree는 내부 노드에 데이터 없음, 리프에만 실제 데이터 포인터 저장.
Ⅱ.실행계획 & 조인 알고리즘
가. 실행계획(Execution Plan) 분석
실행계획이란 옵티마이저(Optimizer)가 SQL 쿼리를 최적으로 처리하기 위해 선택한 실행 방법입니다. EXPLAIN 명령으로 확인합니다.
-- 실행계획 확인 EXPLAIN SELECT * FROM orders WHERE customer_id = 100; -- 주요 확인 항목 -- type: ALL(풀스캔) → range → ref → eq_ref → const (좋을수록 우측) -- key: 사용된 인덱스명 -- rows: 예상 스캔 행 수 (적을수록 좋음) -- Extra: Using filesort, Using temporary → 성능 문제 신호
나. 조인 알고리즘 3가지
| 알고리즘 | 방식 | 시간복잡도 | 적합 상황 |
|---|---|---|---|
| Nested Loop Join | 외부 테이블 행마다 내부 테이블 전체 스캔 | O(N×M) | 소규모 테이블, 인덱스 있을 때 |
| Hash Join | 작은 테이블 해시 빌드 → 큰 테이블 프로브 | O(N+M) | 대용량, 등치 조인, 인덱스 없을 때 |
| Sort-Merge Join | 양쪽 정렬 후 병합 | O(N logN) | 이미 정렬된 데이터, 범위 조인 |
Ⅲ.쿼리 튜닝 핵심 기법
| 문제 패턴 | 원인 | 해결 방법 |
|---|---|---|
| Full Table Scan | 인덱스 미사용 | 적절한 인덱스 생성, 컬럼 함수 사용 금지 |
| N+1 문제 | 반복 쿼리 실행 | JOIN 또는 IN절로 한번에 조회 |
| 인덱스 미활용 | WHERE절 함수 적용 | 함수 제거, 함수 기반 인덱스 생성 |
| 불필요한 정렬 | ORDER BY 남용 | 클러스터드 인덱스 활용 |
| SELECT * | 불필요한 컬럼 조회 | 필요한 컬럼만 명시적 선택 |
| 카디널리티 낮은 인덱스 | 잘못된 인덱스 설계 | 카디널리티 높은 컬럼에 인덱스 |
시험 포인트
인덱스를 타지 않는 경우 암기: ① WHERE절 컬럼에 함수 적용 ② 묵시적 형변환 ③ LIKE '%앞에 %' ④ NOT, <> 연산자 ⑤ 복합 인덱스에서 선두 컬럼 미포함
Ⅳ.결론 및 전문가 의견
결론
인덱스와 쿼리 최적화는 DB 성능 튜닝의 핵심입니다.
향후 AI 기반 자동 인덱스 추천, 적응형 쿼리 최적화, 벡터 인덱스(AI/ML 검색)로 발전하며 데이터 규모가 커질수록 중요성이 더욱 증가합니다.
"나쁜 쿼리는 하드웨어로 해결할 수 없다. 근본 원인은 항상 설계에 있다."
블로그: 기술사 학습노트 · imt-log.tistory.com
'데이터베이스' 카테고리의 다른 글
| SQL 핵심 문법과 쿼리 최적화 정리 (0) | 2026.04.06 |
|---|---|
| NoSQL 데이터베이스 종류와 특징 비교 정리 (0) | 2026.03.19 |
| 트랜잭션 ACID 동시성 제어 락 개념 정리 (0) | 2026.03.19 |
| 관계형 데이터베이스 정규화 1NF 2NF 3NF 정리 (0) | 2026.03.19 |
| 데이터베이스 완전정복 — 기술사 핵심 토픽 모음 (0) | 2026.03.18 |