EXISTS와 JOIN은 소비할 결과 모양이 다르다
관련 행의 열과 개수가 필요한지, 존재 여부만 필요한지에 따라 행 증가와 중복 제거 책임이 달라집니다.
| 질문 | 표현 | 결과 행 |
|---|---|---|
| 자식이 있는가 | EXISTS | 부모 후보당 최대 1 |
| 자식이 없는가 | NOT EXISTS | 관계 없는 부모만 |
| 자식 열도 필요 | JOIN | 자식 수만큼 증가 |
| 모든 부모와 수 | LEFT JOIN + GROUP | 부모 보존 + 집계 |
핵심: 문법 취향이 아니라 결과 계약을 먼저 정하고 실제 물리 계획은 EXPLAIN ANALYZE로 확인합니다.