본문 바로가기
데이터베이스

데이터베이스 인덱스 쿼리 최적화 완벽 정리

by 매일기술사 2026. 3. 19.
Database · 한장정리

[기술사토픽] 인덱스 & 쿼리 최적화 완벽 정리 - 한장정리

B+Tree·Hash 인덱스 구조와 장단점, 실행계획 분석, 조인 알고리즘 3가지, 쿼리 튜닝 핵심 기법까지 기술사 빈출 주제를 완벽 정리합니다.

인덱스B+Tree실행계획쿼리튜닝조인알고리즘정보관리기술사

Ⅰ.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