Postgres의 SELECT DISTINCT는 스케일링되지 않는다

Postgres SELECT DISTINCT Does Not Scale

Postgres의 SELECT DISTINCT는 스케일링되지 않는다

DBOS의 Peter Kraft가 Postgres 기반 파티션 큐 워크로드에서 SELECT DISTINCT가 가장 단순해 보이지만 가장 비용이 큰 쿼리였다고 밝혔다. 인덱스가 queue name, status, partition key 순으로 구성되어 있어도, SELECT DISTINCT는 조건에 맞는 모든 행을 스캔한다. 활성 파티션 수만큼만 비용이 들 것이라는 예상과 달리, 고유 값이 적어도 전체 행을 읽어야 하는 구조적 한계가 있다.

SELECT DISTINCT는 조건에 맞는 모든 행을 항상 스캔한다.

이 날의 다른 글

2026-09-26