PostgreSQL인덱스와 성능

EXPLAIN ANALYZE 기본

PostgreSQL이 쿼리를 어떻게 실행하는지 읽는 가장 기본적인 도구인 EXPLAIN ANALYZE의 핵심 해석 포인트를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

text
EXPLAIN ANALYZE
SELECT *
FROM posts
WHERE user_id = 10;

설명

  • EXPLAIN은 PostgreSQL이 쿼리를 어떤 계획으로 실행할지 보여 주고, ANALYZE를 붙이면 실제 실행까지 해 본 결과가 함께 나옵니다.
  • 여기서 자주 보는 단어는 Seq Scan, Index Scan, Nested Loop, Hash Join 같은 실행 노드 이름입니다.
  • cost는 추정 비용이고, actual timerows는 실제 실행 결과입니다.
  • 성능 문제를 볼 때는 "인덱스를 안 썼다"보다 먼저 "왜 그렇게 판단했는가"를 읽는 습관이 중요합니다.
  • 즉 EXPLAIN ANALYZE는 단순 측정 도구가 아니라, 옵티마이저가 어떤 길을 선택했는지 이해하는 첫 출발점입니다.

짧은 예제

text
EXPLAIN ANALYZE
SELECT p.title, u.name
FROM posts AS p
JOIN users AS u ON u.id = p.user_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL '7 days';

빠른 정리

항목읽는 포인트
Seq Scan테이블 전체를 순차 탐색
Index Scan인덱스를 사용한 탐색
cost계획 단계의 추정 비용
actual time실제 실행 시간

주의할 점

EXPLAIN ANALYZE는 실제 쿼리를 실행합니다. 조회는 괜찮지만, 데이터 변경문에 붙일 때는 정말 실행된다는 점을 잊지 말아야 합니다.

참고 링크

1 sources