JOIN 전에 필터링하면 처리 속도가 훨씬 빨라진다
페이지 정보

영삼이
본문
✅ JOIN
전에 필터링하면 처리 속도가 훨씬 빨라진다
먼저 줄이고 조인하라, 메모리와 CPU가 아낀다
❌ 필터 없이 바로 조인
SELECT u.name, o.amount
FROM users u
JOIN orders o ON u.id = o.user_id;
-
users
와orders
를 전부 조인 -
이후에 필터링하면 불필요한 row까지 모두 메모리에 올라감
✅ 서브쿼리 또는 CTE로 먼저 줄이고 조인
SELECT u.name, o.amount
FROM
(SELECT * FROM users WHERE status = 'active') u
JOIN
(SELECT * FROM orders WHERE status = 'paid') o
ON u.id = o.user_id;
-
각 테이블에서 먼저 필요한 row만 추출
-
그 결과만 조인하므로 속도, 리소스 모두 절약
또는 CTE 사용:
WITH active_users AS (
SELECT * FROM users WHERE status = 'active'
),
paid_orders AS (
SELECT * FROM orders WHERE status = 'paid'
)
SELECT u.name, o.amount
FROM active_users u
JOIN paid_orders o ON u.id = o.user_id;
✔️ 많은 데이터에서 JOIN
을 쓴다면,
무조건 먼저 WHERE로 줄이고 JOIN하라.
이게 고성능 SQL의 기본 전략이다.
- 이전글UNION ALL이 UNION보다 빠르다 25.03.28
- 다음글CASE WHEN은 SELECT뿐 아니라 WHERE, ORDER BY에도 쓸 수 있다 25.03.28
댓글목록
등록된 댓글이 없습니다.