이유 있는 default
타입 명시 없이 CREATE INDEX 쓰면 PostgreSQL 이 B-tree. B-tree 가 정렬, 균형, 동등 (=), 범위 (<, >, BETWEEN), prefix 매칭 (LIKE 'foo%'), ORDER BY 지원. 인덱스 컬럼 대다수에 정답.
B-tree 잘 하는 거
- 동등:
WHERE email = 'x' - 범위:
WHERE created_at BETWEEN '2026-01-01' AND '2026-04-30' - Prefix LIKE:
WHERE name LIKE 'A%'('%A'아님) - 정렬:
ORDER BY created_at DESC가 B-tree 직접 사용 가능
B-tree 못 도와주는 거
- Suffix 또는 substring LIKE (
'%foo','%foo%') — pg_trgm/GIN 필요. - JSONB containment, full-text search — GIN 필요.
- Array 연산자, geospatial — GIN/GiST 필요.