아니 왜 having을 못 쓰게 하는데 왜? 이유 정리

아뇨 민균데요·2025년 5월 22일
0

HAVING으로 다 되는데, 굳이 WHERE 왜 씀?
→ 이거 진짜 많이들 궁금해함. 명확하게 알려줄게.


💥 HAVING만으로 다 되는 건 맞지만…

WHERE을 안 쓰면 SQL이 비효율적이거나 느려짐.


✅ 이유 1. 성능 차이 (속도!)

  • WHEREGROUP BY 전에 먼저 필터링됨 → 필터링된 행이 적으면 연산량이 줄어듦.
  • HAVINGGROUP BY 후에 필터링됨 → 불필요한 그룹핑 먼저 다 하고 나서야 필터링함.

📌 예시:

-- 느림
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING salary > 4000;  -- ❌ 집계 후 필터링

-- 빠름
SELECT department, AVG(salary)
FROM employees
WHERE salary > 4000    -- ✅ 먼저 줄여놓고
GROUP BY department;

WHERE으로 먼저 걸러두면, GROUP BY 대상이 줄어들어서 훨씬 빠름


✅ 이유 2. 논리적 구분이 명확함

  • WHERE: 원본 데이터 기준 조건
  • HAVING: 그룹별 요약 결과 조건

잘 짜인 쿼리는 이 구분이 명확해서 유지보수/가독성도 좋음.


✅ 이유 3. 쓸 수 있는 조건이 다름

조건 종류WHERE 가능HAVING 가능
컬럼 값✅ (하지만 비효율)
집계함수

🎯 결론 한 줄 요약

👉 WHERE필터 먼저 해서 성능 올리는 역할,
👉 HAVING그룹 결과를 나중에 거를 때만 사용!


✨ 실전 꿀팁

  • 쿼리 쓸 땐 항상 WHERE로 먼저 거를 수 있으면 먼저 걸러라!
  • HAVING은 정말 집계함수 조건만 걸어야 할 때 써라.
profile
this man을 꿈 속에서 보신 적이 있으신가요?

0개의 댓글