본문 바로가기
CS/DataBase

[SQL] SQL 실행 순서에 대해서

by BK0625 2025. 2. 18.
반응형

SQL 쿼리를 작성할 때 아무 생각 없이 짜다가 문득 실행 순서에 대해 어떻게 되는지 궁금해졌다.

 

SQL 쿼리가 실행될 때는 작성한 순서대로가 아니라 내부적으로 정해진 순서에 따라 처리된다.

가장 일반적인 실행 순서는 아래와 같다

 

SELECT ... 
FROM ... 
JOIN ... 
WHERE ... 
GROUP BY ... 
HAVING ... 
ORDER BY ... 
LIMIT ...;

 

실제 실행 순서

  1. FROM
    1. 테이블을 선택하고 원시 데이터를 가져온다.
    2. JOIN이 있다면 JOIN 조건에 따라 테이블 결합
  2. WHERE
    1. 조건에 따라 행(Row) 필터링
    2. GROUP BY 전에 실행되므로 집계(Aggregation)에 영향을 줌
  3. GROUP BY
    1. 같은 값끼리 그룹화
    2. 집계 함수 (SUM,AVG,COUNT 등)가 사용될 때만 필요
  4. Having
    1. GROUP BY 후에 그룹화된 결과에 대한 조건을 적용
    2. 집계 함수에 대한 필터링 기능
  5. SELECT
    1. 필드(컬럼)를 선택하고 계산
    2. 별칭(Alias)이 이 단계에서 적용됨
  6. DISTINCT
    1. 중복 행을 제거
  7. ORDER BY
    1. 정렬 수행
    2. SELECT한 컬럼이나 별칭(Alias)을 기준으로 정렬 가능
  8. LIMIT/OFFSET
    1. 행의 개수 제한 및 페이징

 

이렇게 풀어써놓으면 아주 당연한 순서지만 쿼리만 가지고 생각하면 잘 기억이 안나니 기억해두자

 

요약 하자면

  • 실행 순서는 FROM -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT
  • GROUP BY는 집계 함수 사용 시 필요
  • HAVING은 GROUP BY 후에 집계된 결과에 조건 적용
  • ORDER BY와  LIMIT은 가장 마지막에 실행

요렇게 되겠다.

 

공부하면서 정리한 내용입니다. 모든 지적 감사히 받겠습니다:)

반응형