PostgreSQL인덱스와 성능

인덱스 기본

조회 속도를 높이기 위해 자주 쓰는 인덱스의 개념과, 어떤 열에 왜 인덱스를 거는지의 기본 판단 기준을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

text
CREATE INDEX idx_posts_user_id
ON posts (user_id);

설명

  • 인덱스는 특정 열 값을 빠르게 찾기 위한 보조 구조입니다.
  • 책 뒤의 색인처럼, 테이블 전체를 처음부터 끝까지 훑지 않고도 필요한 위치에 더 빨리 접근하게 도와줍니다.
  • WHERE, JOIN, ORDER BY에 자주 쓰이는 열은 인덱스 후보가 되기 쉽습니다.
  • 하지만 인덱스는 읽기 성능만 올리고 끝나는 공짜 구조가 아닙니다. 저장 공간을 더 쓰고, INSERTUPDATE 시 인덱스도 함께 갱신해야 하므로 쓰기 비용이 늘어납니다.
  • 따라서 "무조건 많이"가 아니라, 자주 느린 조회가 발생하는 경로를 기준으로 필요한 만큼만 설계하는 편이 좋습니다.

짧은 예제

text
CREATE INDEX idx_posts_created_at
ON posts (created_at DESC);

빠른 정리

항목의미
인덱스빠른 조회를 위한 보조 구조
장점검색, 조인, 정렬 성능 향상 가능
비용저장 공간 증가, 쓰기 성능 부담
후보 열자주 필터링하거나 조인하는 열

주의할 점

인덱스는 "느린 쿼리가 실제로 있는가"를 보고 추가하는 편이 좋습니다. 처음부터 모든 열에 인덱스를 걸기보다, 실행 계획과 조회 패턴을 보고 필요한 곳에 정확히 두는 것이 더 좋은 운영 습관입니다.

참고 링크

2 sources