본문 바로가기
Q&A2022년 5월 25일1분 읽기

PostgreSQL 인덱스 종류와 사용법

홍
홍재원
조회 547댓글 1

PostgreSQL에서 인덱스를 제대로 활용하고 싶습니다. 종류와 언제 뭘 써야 하는지 알려주세요.

댓글 1

김김영삼4년 전

PostgreSQL 인덱스 종류:

-- B-Tree (기본, 가장 많이 사용)
CREATE INDEX idx_email ON users(email);
-- =, <, >, BETWEEN, ORDER BY에 효과적

-- Hash
CREATE INDEX idx_hash ON users USING hash(email);
-- = 비교만 지원, 범위 검색 불가

-- GIN (Full-text, JSON, 배열)
CREATE INDEX idx_tags ON posts USING gin(tags);
-- @>, ?, ?| 등 배열/JSON 연산

-- GiST (공간 데이터, 범위)
CREATE INDEX idx_location ON places USING gist(point);

-- 부분 인덱스 (조건부)
CREATE INDEX idx_active ON users(email) WHERE active = true;

-- 복합 인덱스
CREATE INDEX idx_type_date ON posts(type, created_at DESC);

-- 확인
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@test.com';

대부분 B-Tree면 충분하고, JSON 필드 검색에는 GIN을 사용하세요.

Ctrl+Enter로 등록