PERFORMANCE

윈도우 함수 성능은 정렬과 파티션 크기에서 갈린다

비용은 대체로 파티션 분리, ORDER BY 정렬, 프레임 계산에서 생깁니다. 튜닝은 읽는 행과 정렬량을 줄이는 쪽으로 봅니다.

정렬 비용
인덱스 도움
입력 행 축소
파티션 크기
한 파티션이 너무 크면 메모리와 임시 공간 사용이 커집니다.
ORDER BY 정렬
여러 창 정의가 다른 정렬을 요구하면 비용이 늘어납니다.
인덱스 정렬
PARTITION BY + ORDER BY 순서에 맞춘 인덱스가 도움될 수 있습니다.
입력 행 축소
WHERE/GROUP BY로 먼저 줄이면 윈도우 단계가 가벼워집니다.
좋은 신호
1창 정의가 같아 중복 정렬이 적다.
2필터링 후 필요한 행만 윈도우 계산에 들어간다.
3실행 계획에서 큰 sort spill이 보이지 않는다.
주의 신호
!서로 다른 ORDER BY를 가진 윈도우가 여러 개다.
!파티션이 한쪽으로 쏠려 특정 그룹만 지나치게 크다.
!ROWS/RANGE 프레임이 의도보다 넓게 잡힌다.
성능 판단은 “정렬을 줄일 수 있는가, 읽는 행을 줄일 수 있는가, 같은 창 정의를 관리할 수 있는가”로 시작합니다.