SQL

SQL SELECT 쿼리 실행 순서 완벽 정리

초코너무조코 2025. 5. 9. 14:14
728x90

SQL에서 SELECT 문은 가장 자주 사용되는 명령어 중 하나입니다. 하지만 우리가 작성하는 SELECT 문은 실제로 데이터베이스가 처리하는 순서와 다릅니다. 이 글에서는 SQL의 SELECT 쿼리가 실제로 어떻게 실행되는지를 단계별로 자세히 알아보겠습니다.


우리가 흔히 쓰는 SELECT 문

SELECT name, age
FROM users
WHERE age > 20
GROUP BY age
HAVING COUNT(*) > 1
ORDER BY age DESC
LIMIT 10;

이 쿼리는 겉보기에는 위에서 아래로 순차적으로 실행되는 것처럼 보이지만, 실제로 데이터베이스가 처리하는 순서는 전혀 다릅니다.


SELECT 쿼리의 실제 실행 순서

SQL 표준에 따른 SELECT 문은 아래와 같은 순서로 실행됩니다:

  1. FROM
    테이블이나 뷰 등 데이터를 가져올 소스를 지정합니다.
    → 예: FROM users
  2. JOIN
    여러 테이블을 조인하는 경우, 이 시점에서 병합이 일어납니다.
    → 예: INNER JOIN orders ON users.id = orders.user_id
  3. WHERE
    조건에 맞는 행(Row)만 필터링합니다.
    → 예: WHERE age > 20
  4. GROUP BY
    지정한 컬럼을 기준으로 데이터를 그룹화합니다.
    → 예: GROUP BY age
  5. HAVING
    그룹화된 데이터에 조건을 적용합니다. WHERE과는 달리 집계 함수 사용 가능.
    → 예: HAVING COUNT(*) > 1
  6. SELECT
    필요한 컬럼을 선택합니다. 이 단계에서 집계 함수도 계산됩니다.
    → 예: SELECT name, age
  7. DISTINCT
    중복된 결과를 제거합니다. (선택적 단계)
  8. ORDER BY
    결과를 정렬합니다.
    → 예: ORDER BY age DESC
  9. LIMIT / OFFSET
    최종 결과에서 원하는 개수만큼만 잘라냅니다.
    → 예: LIMIT 10

순서를 외우는 팁

외우기 쉽게 줄여보면:
F J W G H S D O L

  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • SELECT
  • DISTINCT
  • ORDER BY
  • LIMIT

마무리

SQL의 SELECT 문은 우리가 작성하는 순서와 실제 실행 순서가 다르기 때문에, 정확한 실행 순서를 이해하는 것이 매우 중요합니다. 특히 WHERE과 HAVING의 차이, GROUP BY 이전/이후에 실행되는 단계 등을 잘 이해하면 복잡한 쿼리도 훨씬 쉽게 짤 수 있습니다.

 

728x90