기혁씨의 삽질표류기

[삽질표류기/SQL] WHERE과 HAVING의 차이?

각시탈코더 2022. 12. 28. 15:05

1.WHERE과 HAVING은 언제 어느 때 사용할까?

 

WHERE

  • 질의 실행 전 살펴봄
  • "질의가 처리할 행을 결정"
  • 개별 행에 적용
  • 집계함수 사용 불가
  • ROWID를 찾는데 유리
  • 최적화

HAVING

  • 질의 실행 후 살펴봄
  • 모든 행을 처리한 다음 클라이언트에 반환할 행을 결정
  • 결과 집합의 행에 적용
  • 집계함수 사용 가능

 *SQL이 진행되는 순서

FROM,WHERE,GROUP BY, HAVING, ORDER BY, SELECT

 

 

2.WHERE와 HAVING을 섞어 사용할 수 있을까?

:WHERE은 관심있는 행만 읽어 최적화가 가능하지만 HAVING을 사용하는 경우 모든 행을 다 읽어 최적화에 불리하다. WHERE은 최적화를 목적으로 쓰는 데 HAVING은 최적화를 목적으로 하지 않는다. 반대도 마찬가지다. 즉 목적이 다른 두 구문은 함께 사용하지 않는다.