서브쿼리 예시 :
SELECT name FROM users WHERE id IN ( SELECT user_id FROM alerts WHERE created_at >= SYSDATE - 7 );
join 예시:
SELECT DISTINCT u.name FROM users u JOIN alerts a ON u.id = a.user_id WHERE a.created_at >= SYSDATE - 7;
서브쿼리 JOIN
| 가독성 | 단순한 경우 깔끔 | 복잡한 관계 표현에 유리 |
| 성능 | 중첩 반복 실행될 수 있음 → 느릴 수 있음 | 옵티마이저가 계획을 잘 짜주면 더 빠름 |
| 재사용성 | 어렵다 | 여러 테이블과 연결 용이 |
| 인덱스 활용 | 덜 유리한 경우 있음 | 인덱스 효율적으로 타기 좋음 |
| 옵티마이저 | 쿼리 내 구조 따라 달라짐 | JOIN을 선호하는 경우 많음 |
결론
- 서브쿼리는 간단한 로직, 중첩 조건 처리용으로 적절.
- 성능 측면에서는 JOIN이 우세한 경우가 많음, 특히 대용량일수록.
- 하지만 항상 그런 것은 아니므로 **실행계획(EXPLAIN PLAN)**으로 비교하는 것이 중요함!
'TIL' 카테고리의 다른 글
| LazyInitializationException (0) | 2025.05.19 |
|---|---|
| Kotlin vs Java (0) | 2025.05.13 |
| LoadBalancer에 대해서 (0) | 2025.05.12 |
| LAG 란 (0) | 2025.05.12 |
| flutter speech_to_text 버전 에러 (0) | 2025.04.28 |