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 문은 아래와 같은 순서로 실행됩니다:
- FROM
테이블이나 뷰 등 데이터를 가져올 소스를 지정합니다.
→ 예: FROM users - JOIN
여러 테이블을 조인하는 경우, 이 시점에서 병합이 일어납니다.
→ 예: INNER JOIN orders ON users.id = orders.user_id - WHERE
조건에 맞는 행(Row)만 필터링합니다.
→ 예: WHERE age > 20 - GROUP BY
지정한 컬럼을 기준으로 데이터를 그룹화합니다.
→ 예: GROUP BY age - HAVING
그룹화된 데이터에 조건을 적용합니다. WHERE과는 달리 집계 함수 사용 가능.
→ 예: HAVING COUNT(*) > 1 - SELECT
필요한 컬럼을 선택합니다. 이 단계에서 집계 함수도 계산됩니다.
→ 예: SELECT name, age - DISTINCT
중복된 결과를 제거합니다. (선택적 단계) - ORDER BY
결과를 정렬합니다.
→ 예: ORDER BY age DESC - 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