TYPEORM READ STRATEGY

조회 최적화는 화면 요구를 네 개 레버로 번역하는 일이다

인덱스, 조인, 선택 컬럼, 페이지네이션은 따로 고르는 옵션이 아니라 요청 패턴을 DB가 처리하기 쉬운 모양으로 바꾸는 기준이다.

목록 화면필터, 정렬, 페이지 크기를 먼저 확인한다.
상세 화면필요한 관계만 명시적으로 로드한다.
통계 화면집계 범위와 인덱스 사용 여부를 본다.

Index

WHERE / JOIN자주 필터링하는 컬럼을 후보로 둔다.
ORDER BY정렬 컬럼과 복합 인덱스 순서를 맞춘다.
쓰기 비용변경이 많은 테이블에는 신중히 추가한다.

Join / relation

N+1 제거leftJoinAndSelect로 반복 조회를 줄인다.
eager 주의항상 필요한 관계에만 사용한다.
batch조건부 관계는 id 목록으로 묶어 조회한다.

Projection

SELECT 축소화면에 필요한 컬럼만 반환한다.
DTO 경계엔티티 전체 노출을 피한다.
전송량큰 text, json, blob 컬럼을 제외한다.

Pagination

LIMIT / OFFSET간단한 목록에 빠르게 적용한다.
Cursor큰 데이터와 무한 스크롤에 적합하다.
정렬 필수페이지 기준이 흔들리지 않게 한다.
증상
Index
Join
Projection
Pagination
scan rows 큼
우선
보조
보조
보조
쿼리 수 많음
보조
우선
보조
보류
전송량 큼
보류
보조
우선
우선