PostgreSQL에서 인덱스를 제대로 활용하고 싶습니다. 종류와 언제 뭘 써야 하는지 알려주세요.
PostgreSQL 인덱스 종류:
-- B-Tree (기본, 가장 많이 사용)CREATE INDEX idx_email ON users(email);-- =, <, >, BETWEEN, ORDER BY에 효과적-- HashCREATE 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을 사용하세요.
댓글 1
PostgreSQL 인덱스 종류:
대부분 B-Tree면 충분하고, JSON 필드 검색에는 GIN을 사용하세요.