하나의 쿼리문 안에서도 각각의 절이 실행되는 순서가 있다.
이 순서를 알고있는 것이 쿼리문의 구조를 이해하고, 쿼리문을 작성하는 데에 도움이 될 것이다!
실행순서
1) FROM 절 (+ Join)
FROM 절에서는 조회할 테이블을 지정한다.
이후 Join을 실행하여 하나의 가상 테이블로 결합한다.
2) WHERE 절
WHERE 절에서는 테이블에서 조건에 맞는 데이터를 필터링한다.
3) GROUP BY
GROUP BY 절에서는 선택한 칼럼을 기준으로 조회한 레코드 목록을 그룹핑한다.
4) HAVING 절
HAVING 절은 그룹핑 후에 각 그룹에 사용되는 조건 절이다. 쉽게 말해 그룹을 필터링한다고 생각하면 된다.
5) SELECT 절
SELECT 절은 여러 조건들을 처리한 후 남은 데이터에서 어떤 열을 출력해줄지 선택한다.
6) ORDER BY 절
어떤 열까지 출력할지 정했다면 행의 순서를 어떻게 보여줄지 정렬 해주는 절이 ORDER BY이다.
7) LIMIT 절
LIMIT 절은 결과 중 몇개의 행을 보여줄 지 선택한다.
실행순서를 알아야 하는 이유!
ALIAS
select 문에서 사용하는 별칭을
order by 절에서는 사용할 수 있지만,
where 절에서는 사용할 수 없다!!
ORDER BY
=> 속도 저하의 원인이 됨.
전체 데이터를 조회한 후 마지막에 수행되기 때문에, where 조건으로 데이터를 많이 걸러주는 것이 중요하다!
HAVING vs. WHERE
HAVING 절의 조건을 WHERE 절에도 사용할 수 있는 경우라면 WHERE절에 사용하는 것이 바람직하다.
HAVING 절은 각 그룹에 조건을 걸기 때문에 퍼포먼스가 떨어지게 된다.