SQL

SQL

JOIN 전에 필터링하면 처리 속도가 훨씬 빨라진다

페이지 정보

profile_image
영삼이
0건 41회 25-03-28 15:21

본문

JOIN 전에 필터링하면 처리 속도가 훨씬 빨라진다

먼저 줄이고 조인하라, 메모리와 CPU가 아낀다


❌ 필터 없이 바로 조인

SELECT u.name, o.amount
FROM users u
JOIN orders o ON u.id = o.user_id;
  • usersorders를 전부 조인

  • 이후에 필터링하면 불필요한 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의 기본 전략이다.

댓글목록

등록된 댓글이 없습니다.