컬럼 아닌 계산 인덱스
Expression 인덱스가 표현식 결과 인덱스. CREATE INDEX ... ON users (LOWER(email)) 이 lowercase 형태 인덱스. 이제 WHERE LOWER(email) = 'x' 가 인덱스 사용 가능 — expression 인덱스 없으면 그 쿼리는 sequential scan 운명.
흔한 응용
- 대소문자 무시 lookup:
LOWER(email),UPPER(sku). - JSONB 필드 접근:
(payload->>'user_id')인덱스. - 연결:
(first_name || ' ' || last_name)인덱스. - 날짜 truncation: 'by-day' 쿼리 위한
DATE(timestamp_col)인덱스.
비용
관련 컬럼 건드리는 모든 INSERT 와 UPDATE 에서 표현식 평가. 비싼 표현식은 insert 오버헤드 추가. 싼 거 (LOWER, json 필드 접근) 는 본질적으로 공짜.