CS Repo/DB

SQL 쿼리의 동작 순서와 기본적인 동작 원리

조금씩 차근차근 2025. 5. 1. 21:50

SQL 문법의 동작 순서 외우는 법

  • 게토레이
  • 랮혼애ㅣ
  • fowghsdol
  • 각 문법의 첫글자를 딴 형태로 만든 암기 방식이다.

실제 동작 순서는 다음과 같다.

  1. from
  2. on(join)
  3. where
  4. group by
  5. having
  6. select
  7. distinct
  8. order by
  9. limit/offset

From

  • 쿼리의 작업 대상이 되는 기본 테이블을 결정한다.
  • 최초 쿼리가 동작할 테이블/뷰/파티션/서브쿼리가 정확히 어딘지를 결정한다.

On(Join)

  • 조인 순서 최적화
  • 조인 알고리즘 선택
  • 별도의 글로 작성해야 함. 깊이가 깊음. (작성예정)

Where

  • FROM/Join 절로 생성된 모든 행에 대해 필터링을 수행한다.
    • 인덱스를 사용 가능한 (sargable) 조건들에 대하여, 인덱스를 사용하여 탐색한다.
  • 집계함수를 사용할 수 없다.
  • select 절에서 정의한 alias는 참조할 수 없다.
    • 아직 select를 처리하기 전이다.

Group by

  • Group By 문법에 맞게, Grouping을 수행한다.
  • 그룹이 형성된 직후, 해당 그룹에 대해 SUM(), AVG(), COUNT() 와 같은 집계 함수를 계산한다.
    • 그리디하게 순회하면서 동시에 값을 계산해나간다고 보면 된다.
  • Group By 절이 없을 경우, 이때 전체 결과 집합을 단일 그룹으로 간주하여, 집계 결과 하나만을 계산한다.

Having

  • 그룹 단위로 Having 조건식을 평가하여, 조건에 맞지 않는 그룹을 제거한다.

Select

  • 실제로 출력할 값들을 생성한다.

Distinct

  • 중복된 행들을 제거한다.

Union/Union All

  • 집합 연산을 수행한다.

Order by

  • 정렬을 적용한다.

Limit/Offset

  • 페이지네이션을 위한 Limit/Offset 계산을 수행한다.