Derived 컬럼 두 종류
Generated 컬럼이 같은 행 다른 컬럼에서 값 도출. STORED generated 컬럼이 모든 insert/update 시 디스크 기록 — 공간 차지하지만 인덱싱 가능. VIRTUAL generated 컬럼 (PG 18+) 이 read 시 계산 — 저장 없음, 항상 최신, 인덱스 불가.
인덱스 걸 거면 STORED
VIRTUAL 컬럼 인덱싱 불가 (값 저장 안 됨). STORED 컬럼 인덱싱은 다른 컬럼처럼 동작. 결정은 보통: "이 derived 값으로 쿼리/필터/정렬 할 거?" — 예면 STORED, 아니면 VIRTUAL 이 더 쌈.
본전 뽑는 use case
- 제목에서 계산된 slug.
- 검색 친화 정규화 텍스트 (lowercase, 강세 제거).
- Pre-computed total (price × quantity, before-tax + tax).
- Full-text search 위한 tsvector (항상 STORED + GIN).